ファイルシステムを調べるには、os.walk
を試してみてください。それは再帰的に各ディレクトリ内のファイルとディレクトリのリストを生成するディレクトリに従います。例えば
、このようなディレクトリ構造を与えられた:
.
├── baz
│ └── bif
│ ├── bang
│ └── file1.doc
└── foo
├── bar
│ └── file3.doc
└── file2.doc
このコード:
[('.', ['baz', 'foo'], []),
('./baz', ['bif'], []),
('./baz/bif', ['bang'], ['file1.doc']),
('./baz/bif/bang', [], []),
('./foo', ['bar'], ['file2.doc']),
('./foo/bar', [], ['file3.doc'])]
あなたは可能性があり、その後をループ:
import os
print list(os.walk('.')) # walk current (.) directory
はこのような何かを作るだろう結果を表示し、コピーするファイルのリストをコンパイルします。
ファイルをコピーする場合、shutil
パッケージには、copy
があり、src/destファイルのパスをとるだけです。 http://docs.python.org/library/shutil.html
編集
役に立ちましたファイルを検索物事は、次のとおりです:
glob
パッケージ:名前が示すように、グロブスタイルファイルのマッチング(* .TXTを詳細については、ドキュメントを参照してください、、など)。私はこれが再帰的な検索をサポートしているとは思わない。この例では、glob('foo/*.doc')
を実行すると、['foo/file2.doc']
という結果が得られます。
fnmatch
fnmatch
パッケージからは、文字列に対してglobスタイルのパターンマッチングを実行できます。例fnmatch('foo.txt', '*.txt')
戻ります。True
フィードバックありがとうございます。上記のos.walkメソッドを使用して、コピーするファイルのリストを作成した後、shutil.copyfileを使用してリスト内のすべてのファイルをコピーしていた可能性があります。しかし、これは2つの問題を引き起こします - 1)これは私の頭上にかなりの方法です2)最も洗練された解決策のようには見えません。もし私がもっと難しく思うなら、おそらくこれを扱う簡単な方法があります。 もう一度、ご協力いただきありがとうございます。 –
@LiamJohnson:この質問に対する受け入れられた答え:osを使用する方法の良い例を与えるのは、http://stackoverflow.com/questions/2186525/use-a-glob-to-find-files-recursively-in-pythonです。あなたがやろうとしているようなファイルを探すためにfnmatchを使って歩いてください。 –