web-dev-qa-db-ja.com

ディレクトリ内のファイルのみを取得する方法は?

私はこのコードを持っています:

allFiles = os.listdir(myPath)
for module in allFiles:
    if 'Module' in module: #if the Word module is in the filename
        dirToScreens = os.path.join(myPath, module)    
        allSreens = os.listdir(dirToScreens)

今、すべてがうまく機能し、行を変更するだけです

allSreens = os.listdir(dirToScreens)

フォルダーではなくファイルのみのリストを取得します。したがって、私が使用するとき

allScreens  [ f for f in os.listdir(dirToScreens) if os.isfile(join(dirToScreens, f)) ]

それは言います

module object has no attribute isfile

注:Python 2.7を使用しています

15
user2817200

os.path.isfile メソッド:

import os
from os import path
files = [f for f in os.listdir(dirToScreens) if path.isfile(f)]

または、機能的だと感じた場合:D

files = filter(path.isfile, os.listdir(dirToScreens))
40
Paulo Bu

「特定の拡張子、接頭辞、または任意の一般的な文字列が中央にあるファイル名のリストが必要な場合は、ディレクトリの内容を自分でスキャンするコードを記述する代わりに glob を使用してください」

import os
import glob

[name for name in glob.glob(os.path.join(path,'*.*')) if os.path.isfile(os.path.join(path,name))]
7
juankysmith