ここに私の問題があります。仕事中、私は 2 つのディレクトリとディレクトリ内のすべてのサブ フォルダーを使用して作業しています。ファイル名の入力を求めるプログラムを作成したいと思います。ファイル名が指定された後、これらの 2 つのディレクトリと、これらのディレクトリ内のすべてのサブフォルダーを検索して、名前が一致するファイルを探します。これを行う簡単な方法はありますか。どんな助けでも大歓迎です。私はpython 3でこれをやりたいと思っています(注:これは私の最初の実際のプロジェクトであり、正直なところ、どこから始めればよいかわかりません。)
質問する
3480 次
1 に答える
2
これは、フォルダー内のすべてのファイルを返す再帰ヘルパー関数を含む関数です (辞書形式: {file_name: file_path, ...}
.
import os, os.path
def getFiles(path):
'''Gets all of the files in a directory'''
sub = os.listdir(path)
paths = {}
for p in sub:
print p # just to see where the function has reached; it's optional
pDir = os.path.join(path, p)
if os.path.isdir(pDir):
paths.update(getAllFiles(pDir, paths))
else:
paths[p] = pDir
return paths
def getAllFiles(mainPath, paths = {}):
'''Helper function for getFiles(path)'''
subPaths = os.listdir(mainPath)
for path in subPaths:
pathDir = pDir = os.path.join(mainPath, path)
if os.path.isdir(pathDir):
paths.update(getAllFiles(pathDir, paths))
else:
paths[path] = pathDir
return paths
たとえば、 を探している場合myfile.txt
、辞書のキーと値のペアの 1 つが のようになり{'myfile.txt': 'C:\Users\Example\Path\myfile.txt', ...}
ます。
フォルダーに含まれるファイルの数によっては、遅くなる場合があります。私の検索にはsys.path
(10個ほどのフォルダーがあり、そのうちの1つPython\Lib
は巨大です)、約9秒かかります。
于 2013-04-24T17:27:29.520 に答える