Python でディレクトリ内のファイル (ディレクトリではない) を一覧表示する方法はありますか? os.listdir
と s のループを使用できることはわかっていますos.path.isfile()
が、もっと単純なもの (関数os.path.listfilesindir
など) があれば、おそらくより良いでしょう。
質問する
72185 次
8 に答える
62
これは単純なジェネレータ式です:
files = (file for file in os.listdir(path)
if os.path.isfile(os.path.join(path, file)))
for file in files: # You could shorten this to one line, but it runs on a bit.
...
または、より適している場合は、ジェネレーター関数を作成できます。
def files(path):
for file in os.listdir(path):
if os.path.isfile(os.path.join(path, file)):
yield file
次に簡単に:
for file in files(path):
...
于 2013-01-05T20:38:16.640 に答える
7
次のように Windows で pathlib を使用します。
files = (x for x in Path("your_path") if x.is_file())
エラーを生成します:
TypeError: 'WindowsPath' オブジェクトは反復可能ではありません
filePath = Path("your_path")
if filePath.is_dir():
files = list(x for x in filePath.iterdir() if x.is_file())
于 2016-01-25T11:36:50.887 に答える
3
他にもたくさんの便利なものがあるpathlibを試すことができます。
Pathlib は、ファイルシステム パスを操作するためのオブジェクト指向ライブラリです。現在のディレクトリにあるファイルを取得するには、次のようにします。
from pathlib import *
files = (x for x in Path(".") if x.is_file())
for file in files:
print(str(file), "is a file!")
私の意見では、これは を使用するよりも Pythonic ですos.path
。
参照: PEP 428 .
于 2013-01-05T20:39:46.290 に答える
2
を使用してpathlib
、ファイルのみを一覧表示する最短の方法は次のとおりです。
[x for x in Path("your_path").iterdir() if x.is_file()]
必要に応じて深度サポート付き。
于 2017-11-17T16:20:17.197 に答える