web-dev-qa-db-ja.com

Python-os.listdirでファイルを見つけてディレクトリをスキップする方法

私が使う os.listdirとそれは正常に動作しますが、リスト内のサブディレクトリも取得します。これは私が望んでいるものではありません。ファイルだけが必要です。

そのためにどの機能を使用する必要がありますか?

私も見ましたos.walkそして、それは私が望むもののようですが、それがどのように機能するのか分かりません。

38
Bartee

ディレクトリを除外する必要があります。 os.listdir()は、指定されたパス内のすべてのnamesをリストします。これには os.path.isdir() を使用できます。

_basepath = '/path/to/directory'
for fname in os.listdir(basepath):
    path = os.path.join(basepath, fname)
    if os.path.isdir(path):
        # skip directories
        continue
_

os.walk()は、内部で同じ作業を行います。サブディレクトリを再帰する必要がない限り、ここでos.walk()を使用する必要はありません。

44
Martijn Pieters

リスト内包形式の素敵な小さなワンライナーを次に示します。

[f for f in os.listdir(your_directory) if os.path.isfile(os.path.join(your_directory, f))]

これは、指定されたyour_directory内のファイル名のreturn a listになります。

21
Alex Thornton
import os
directoryOfChoice = "C:\\" # Replace with a directory of choice!!!
filter(os.path.isfile, os.listdir(directoryOfChoice))

追伸: os.getcwd() 現在のディレクトリを返します。

8
SixSense
for fname in os.listdir('.'):
    if os.path.isdir(fname):
       pass  # do your stuff here for directory
    else:
       pass  # do your stuff here for regular file
4
nagylzs