Python - как найти файлы и пропустить каталоги в os.listdir
Я использую os.listdir
, и он отлично работает, но я также получаю подкаталоги в списке, чего я не хочу: мне нужны только файлы.
Какую функцию мне нужно использовать для этого?
Я также посмотрел на os.walk
, и, похоже, это то, что я хочу, но я не уверен, как это работает.
Ответы
Ответ 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