Подтвердить что ты не робот

Как получить только файлы в каталоге?

У меня есть этот код:

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

4b9b3361

Ответ 1

Вы можете использовать метод 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))

Ответ 2

"Если вам нужен список имен файлов, в которых все имеют определенное расширение, префикс или любую общую строку в середине, используйте glob вместо написания кода для самостоятельного сканирования содержимого каталога

import os
import glob

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