Python:あるパスの下にあるすべてのファイルとフォルダを遍歴出力する


どのようにして、あるパスの下のすべての質問とフォルダを出力しますか?
この問題は、「ノードを指定し、このノードをルートノードとするこのツリーのすべてのサブノードを出力する」と同じです.
再帰は実現できる.
リーフノード(ファイル)であれば、このリーフノードの名前を出力し、返します.
そうでなければ、このノードの名前(フォルダ)を出力し、このノードを再びルートノードとして出力し、そのすべてのサブノードを遍歴します.
# -*- coding: utf-8 -*-
"""
Created on 2017 11 11 13:19:20

@author: qcy
"""

import os


def traverse(f):
    fs = os.listdir(f)
    for f1 in fs:
        tmp_path = os.path.join(f,f1)
        if not os.path.isdir(tmp_path):
            print('  : %s'%tmp_path)
        else:
            print('   :%s'%tmp_path)
            traverse(tmp_path)
            
path = 'F:/source_files/python/'
traverse(path)

注意しなければならないのはosです.Listdir()この関数は、パスの下にあるすべてのファイル名のみを返します(これらのファイル名にはパスが含まれていません)......
だから絶対パスを書きます.OSを使ってもいいです.path.joinという関数.
In [1]: import os In [2]: os.path.join('a','b') Out[2]: 'a\\b'
OSを呼び出すこともできます.walkという関数.

import os


path = 'F:/source_files/python/'

for fpathe,dirs,fs in os.walk(path):
    for f in fs:
        print(os.path.join(fpathe,f))

戻ってくるのは3元tupple(dirpath,dirnames,filenames)で、1つ目は開始パス、2つ目は開始パスの下のフォルダ、3つ目は開始パスの下のファイルです.dirpathはstringであり、ディレクトリを表すパスであり、dirnamesはlistであり、dirpathの下のすべてのサブディレクトリの名前を含み、filenamesはlistであり、非ディレクトリファイルの名前を含み、これらの名前にはパス情報は含まれていない.全経路を得る必要がある場合はosを使用する必要がある.path.join(dirpath, name).