0

私はこのサイトに不慣れで、Python には比較的慣れていません。私は現在、ファイルとディレクトリを調べるために再帰的な検索機能を作成する必要があるプロジェクトに取り組んでいます。この関数は、ディレクトリ パスと検索基準 (この場合はファイル名) を受け取り、ファイルが存在する場合はファイルへのフル パスを返すことになっています。

def search(path, file):
fullPath = path
inDir = os.listdir(path)

for element in inDir:
    if os.path.join(path, file) == os.path.join(path, element):
        fullPath = os.path.join(fullPath, file)
        print(fullPath)
        return fullPath
    elif os.path.isdir(os.path.join(path, element)):
        fullPath = search(os.path.join(path, element), file)

Python での再帰には、再帰呼び出しで return ステートメントが必要であることは知っていますが、次のことも試しました。

def search(path, file):
fullPath = path
inDir = os.listdir(path)

for element in inDir:
    if os.path.join(path, file) == os.path.join(path, element):
        fullPath = os.path.join(fullPath, file)
        print(fullPath)
        return fullPath
    elif os.path.isdir(os.path.join(path, element)):
        return search(os.path.join(path, element), file)

および他のいくつかのバリエーションがありますが、役に立ちません。最初の関数は正しいパスを出力するので、再帰のある時点でfullPath正しいパスが含まれていることはわかっていますが、関数が 以外のものを返すようには見えませんNone

4

3 に答える 3

3

なぜ os.walk() http://docs.python.org/2/library/os.html#os.walkは、おそらくあなたが望むことのほとんどを行います。

于 2013-10-05T01:24:06.203 に答える