Как получить только файлы в каталоге?
У меня есть этот код:
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
Ответы
Ответ 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))]