現在のディレクトリ内のすべてのファイルのリストと、そのサブディレクトリのすべてが拡張子".asp"
のテキストファイルを生成しようとしています。これを行う最善の方法は何でしょうか?現在のディレクトリとそのサブディレクトリのファイルのリストを特定の拡張子で作成するにはどうすればよいですか?
答えて
os.walkを使用して、そのように簡単にしたいと思うでしょう。
import os
asps = []
for root, dirs, files in os.walk(r'C:\web'):
for file in files:
if file.endswith('.asp'):
asps.append(file)
import os
import glob
asps = []
for root, dirs, files in os.walk('/path/to/dir'):
asps += glob.glob(os.path.join(root, '*.asp'))
import fnmatch
for root, dirs, files in os.walk('/path/to/dir'):
asps += fnmatch.filter(files, '*.asp')
os.path.join()と似ています。私は、OPが彼が見つけたファイルへの完全な経路を必要としていることが分かると思います。 – hughdbrown
私は2番目の解決策を実行したときに、同じディレクトリを繰り返し検索します。 >>> asps = [] >>> p = r'C:\ temp ' >>> os.walk(p)のルート、ディレクトリ、ファイルの場合: ... asps + = fnmatch.filter([ファイル内のファイルの場合は[os.path.join(root、file)]、 "* .txt") – hughdbrown
うーん、そうではありません。私はルートディレクトリの下の複数のディレクトリに同じファイルを持っています。同じディレクトリが繰り返し検索されているように見えますが、そうではありません。あなたの最初の解決法のように、パスがついた方が良いでしょう。 – hughdbrown
や 'まむし= [ファイル内のファイルの(ファイルの場合file.endswith os.walk(path)]の中の_、__、ファイルのための( '.asp')))、これは "Python"のやり方だと思います。 。 –
1ライナーは素晴らしいですが、読みやすさの点でPythonicではありません。 – Unknown
これはディレクトリを再帰的に削除しますが、ファイルのパスは保存しません。 – hughdbrown