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

Python - как найти файлы и пропустить каталоги в os.listdir

Я использую os.listdir, и он отлично работает, но я также получаю подкаталоги в списке, чего я не хочу: мне нужны только файлы.

Какую функцию мне нужно использовать для этого?

Я также посмотрел на os.walk, и, похоже, это то, что я хочу, но я не уверен, как это работает.

4b9b3361

Ответ 1

Вам нужно отфильтровать каталоги; os.listdir() перечисляет все имена в заданном пути. Вы можете использовать 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() здесь.

Ответ 2

Вот хороший маленький однострочный шрифт в виде понимания списка:

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

Это будет return a list имен файлов в указанном your_directory.

Ответ 3

import os
filter(os.path.isfile, os.listdir( os.curdir ))

os.curdir - это текущий каталог

Ответ 4

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