В Python я хочу только перечислить все файлы в текущем каталоге ТОЛЬКО. Я не хочу, чтобы файлы перечислялись из любого подкаталога или родительского элемента
Кажется, есть похожие решения, но они не работают для меня. Вот мой фрагмент кода:
import os
for subdir, dirs, files in os.walk('./'):
for file in files:
do some stuff
print file
Предположим, у меня есть 2 файла, holygrail.py и Tim внутри моего текущего каталога. У меня также есть папка, и она содержит два файла - назовем их Артур и Ланселот - внутри нее. Когда я запускаю скрипт, вот что я получаю:
holygrail.py
Tim
Arthur
Lancelot
Я счастлив с holygrail.py и Тимом. Но два файла, Артур и Ланселот, я не хочу перечислять.
[os.path.join(path_base,f) for f in os.listdir(path_base) if os.path.isfile(os.path.join(path_base,f))]
files = [f for f in os.listdir("/somedir") if os.path.isfile(os.path.join("/somedir", f))]'
Вы можете использовать
os.listdir
для этой цели. Если вам нужны только файлы, а не каталоги , вы можете отфильтровать результаты, используяos.path.isfile
.пример:
или
источник
источник
Вы можете использовать
os.scandir()
. Новая функция в stdlib начинается с Python 3.5.Быстрее чем
os.listdir()
.os.walk()
инвентарьos.scandir()
.источник
это можно сделать с помощью os.walk ()
протестирован Python 3.5.2;
удалите строку dirs.clear (), и файлы в подпапках снова будут включены.
обновлять ссылками ;
os.walk задокументирован здесь и рассказывает о создаваемом тройном списке и эффектах сверху вниз .
.clear () задокументирован здесь для очистки списка
поэтому, очистив соответствующий список от os.walk, вы можете повлиять на его результат в соответствии с вашими потребностями.
источник
Вы можете улучшить этот код, с
del dirs[:]
которым будет похоже на следующее.Или даже лучше, если вы можете указать os.walk с текущим рабочим каталогом.
источник
вместо того
os.walk
, чтобы просто использоватьos.listdir
источник
Вы можете использовать модуль pathlib.
источник