1

現在のフォルダー内のすべてのファイルと、現在のフォルダーのフォルダー内のファイルを一覧表示しようとしています。これは私が行ったことです:

import os


def sendFnF(dirList):
        for file in dirList:

                if os.path.isdir(file):
                        print 'Going in dir:',file
                        dirList1= os.listdir('./'+file)
#                       print 'files in list',  dirList1
                        sendFnF(dirList1)
                        print 'backToPrevDirectory:'

                else:
                        print 'file name is',file




filename= raw_input()
dirList= os.listdir('./'+filename)
sendFnF(dirList)

このコードは、現在のディレクトリのフォルダーに移動します。ただし、サブフォルダーに関しては。それらをファイルとして扱います。私が間違っていることは何ですか?前もってありがとう、サージ。

4

1 に答える 1

1

パスの先頭./に追加しても、基本的には何もしません。また、ディレクトリ パスを使用して関数を再帰的に呼び出したからといって、現在のディレクトリは変更されないため.、ファイル パス内の の意味は変わりません。

ディレクトリを使用して下に移動するには、基本的なアプローチは正しいos.path.join()です。コードを再構築listdir()して、開始時に次のようにすることをお勧めしますsendFnF()

def sendFnF(directory):
    for fname in os.listdir(directory):
        # Add the current directory to the filename
        fpath = os.path.join(directory, fname)

        # You need to check the full path, not just the filename
        if os.path.isdir(fpath):
            sendFnF(fpath)
        else:
            # ...

# ...
sendFnf(filename)

とはいえ、これが演習でない限り、そのまま使用できますos.walk()

于 2013-10-13T19:10:39.663 に答える