Python では、現在のディレクトリにあるすべてのファイルのみを一覧表示したいです。サブディレクトリや親ディレクトリのファイルは一覧表示したくありません。
似たような解決策は他にもあるようですが、私の環境ではうまく機能しないようです。以下は私のコード スニペットです。
import os
for subdir, dirs, files in os.walk('./'):
for file in files:
do some stuff
print file
現在のディレクトリ内に holygrail.py と Tim という 2 つのファイルがあるとします。フォルダーもあり、その中に 2 つのファイル (Arthur と Lancelot と呼ぶことにします) が含まれています。スクリプトを実行すると、次のようになります。
holygrail.py
Tim
Arthur
Lancelot
holygrail.py と Tim には満足しています。しかし、Arthur と Lancelot の 2 つのファイルはリストに含めたくありません。
ベストアンサー1
ただ使うだけos.listdir
そしてos.path.isfile
の代わりにos.walk
。
例:
import os
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
# do something
しかし、これを他のディレクトリに適用する場合は注意が必要です。
files = [f for f in os.listdir(somedir) if os.path.isfile(f)]
f
これは完全なパスではなく、現在のディレクトリに対する相対パスであるため機能しません。
したがって、別のディレクトリでフィルタリングするには、os.path.isfile(os.path.join(somedir, f))
(ありがとう因果関係ヒントについては