Питон пройти все файлы в папке

Питон пройти все файлы в папке

Сразу прошу прощение за форматирования кода. @TODO : прикрутить модуль ! Допустим у нас на сервере есть каталог с файлами:

/var/www/mysite/files
photoes.zip
1.jpg
2.jpg
3.jpg
im.gif
document.pdf

Чтобы получить содержимое этого каталога в виде списка, можно воспользоваться встроенным модулем os:

#Подключаем модуль
import os

#Каталог из которого будем брать файлы
directory = ‘/var/www/mysite/files’

#Получаем список файлов в переменную files
files = os.listdir(directory)

В результате files будет равна:

[‘photoes.zip’, ‘1.jpg’, ‘2.jpg’, ‘3.jpg’, ‘im.gif’, ‘document.pdf’]

Если нужно получить файлы только определенного типа, их можно отфильтровать по расширению:

#Подключаем модуль
import os

#Каталог из которого будем брать изображения
directory = ‘/var/www/mysite/files’

#Получаем список файлов в переменную files
files = os.listdir(directory)

#Фильтруем список
images = filter(lambda x: x.endswith(‘.jpg’), files)

Теперь в переменной images такой список:

решение взято с сайта: http://tutorialbox.freelancing.lv/tutorials/6

Немного магии от модуля os

os.walk() — возвращает объект-генератор. Из полученного объекта можно получить кортежи
для каждого каталога в переданной walk файловой иерархии. Каждый кортеж состоит из трех
элементов:

1. Абсолютный адрес очередного каталога (строка).
2. Имена (без адреса) подкаталогов первого уровня для текущего каталога (список).
3. Имена (без адреса) файлов данного каталога.

Посмотрим, как это работает. Допустим, у нас есть такое дерево каталогов:
tree = os.walk(‘/home/pl/mydir’)
На что же ссылается tree? Попробуем просто получить данные, связанные с данной переменной.

В результате видим

Итак, есть объект-генератор. Поскольку полученный объект генерирует кортежи, количество
которых равно количеству каталогов в дереве, то можно их получить с помощью цикла for и,
например, вывести на экран

В соответствии с вышеуказанным деревом каталогов получится следующее:

(‘/home/pl/mydir’, [‘dir2a’, ‘dir2b’], [‘mash187.pas’, ‘mash189.pas’, ‘menu_.php’, ‘xorg.conf’, ‘клав_тренажер.odt’, ‘Расписание 2004.xls’])
(‘/home/pl/mydir\\dir2a’, [‘dir3’], [‘less1.doc’, ‘Patro_Nia.ogg’, ‘Расписание 2004.doc’])
(‘/home/pl/mydir\\dir2a\\dir3’, [], [‘bottom_.php’, ‘equador.mid’, ‘less1.html’, ‘net_Alt.txt’, ‘poly995.mid’, ‘top_.php’])
(‘/home/pl/mydir\\dir2b’, [], [‘clear.gif’, ‘fon1.jpg’, ‘logo4.png’, ‘okulov245.pas’, ‘okulov273.pas’, ‘plan1.jpg’, ‘plan2.jpg’])

Итак, налицо четыре кортежа (у нас четыре каталога – см. схему выше). Каждый кортеж
включает три элемента. Первый – это адрес каталога, второй – список поддиректорий не глубже
первого уровня, третий – список имен файлов. Если вложенных каталогов или файлов нет, то
соответствующий им список будет пуст.

Если мы еще раз запустим цикл с переменной tree, то уже ничего не получим. Дело в том,
что объект-генератор, с которым переменная была связана, уже был использован, он выдал
свое содержимое и больше его не содержит. Поэтому, если требуется сохранить кортежи для
последующий обработки, то лучше сохранить их, например, в списке:

>>> import os
>>> pdir = ‘G:/projects/pythoner.info/pypath/mydir’
>>> contdir = []
>>> for i in os.walk(pdir):
contdir.append(i)

(‘G:/projects/pythoner.info/pypath/mydir’, [‘dir2a’, ‘dir2b’], [‘mash187.pas’, ‘mash189.pas’, ‘menu_.php’, ‘sg30.thm’, ‘xorg.conf’, ‘клав_тренажер.odt’, ‘Расписание 2004.xls’])
(‘G:/projects/pythoner.info/pypath/mydir\\dir2a’, [‘dir3’], [‘less1.doc’, ‘Patro_Nia.ogg’, ‘Thumbs.db’, ‘Расписание 2004.doc’])
(‘G:/projects/pythoner.info/pypath/mydir\\dir2a\\dir3’, [], [‘equador.mid’, ‘fon1.jpg’, ‘logo4.png’, ‘logos.bmp’, ‘net_Alt.txt’, ‘plan1.jpg’, ‘poly995.mid’, ‘Thumbs.db’, ‘top_.php’])
(‘G:/projects/pythoner.info/pypath/mydir\\dir2b’, [], [‘bottom_.php’, ‘clear.gif’, ‘less1.html’, ‘okulov245.pas’, ‘okulov273.pas’, ‘plan2.jpg’, ‘sg30.sdv’])

С помощью функции walk() можно получить имена файлов с тем, чтобы в дальнейшем с ними
что-нибудь делать с помощью других методов Python и его модулей. Получить их можно,
извлекая из третьего элемента каждого кортежа. Сделать это можно так, как показано ниже:

for d, dirs, files in os.walk(‘c:/mydir’):
for f in files:
print (f)

Переменная d в каждой итерации связывается с первым элементом каждого кортежа (строкой,
содержащей адрес каталога), dirs – со вторым элементом (списком подкаталогов), а files —
со списками файлов очередного каталога. Чтобы извлечь списки файлов целиком, а не
выделять каждый файл по отдельности, можно сделать так:

for d, dirs, files in os.walk(‘c:/mydir’):
print (files)

[‘mash187.pas’, ‘mash189.pas’, ‘menu_.php’, ‘xorg.conf’, ‘клав_тренажер.odt’, ‘Расписание 2004.xls’]
[‘less1.doc’, ‘Patro_Nia.ogg’, ‘Расписание 2004.doc’]
[‘bottom_.php’, ‘equador.mid’, ‘less1.html’, ‘net_Alt.txt’, ‘poly995.mid’, ‘top_.php’]
[‘clear.gif’, ‘fon1.jpg’, ‘logo4.png’, ‘okulov245.pas’, ‘okulov273.pas’, ‘plan1.jpg’, ‘plan2.jpg’]

Имена файлов не полные. Они не содержат адреса, следовательно, для операций с файлами
таких списков не достаточно. Для получения полных адресов подойдет функция
os.path.join(). С ее помощью можно объединить первый элемент кортежа, содержащий полный
путь, с именем каждого файла:
>>> path_f = []
>>> for d, dirs, files in os.walk(‘c:/mydir’):
for f in files:
path = os.path.join(d,f) # формирование адреса
path_f.append(path) # добавление адреса в список

>>> path_f
[‘c:/mydir\\mash187.pas’, ‘c:/mydir\\mash189.pas’, ‘c:/mydir\\menu_.php’, ‘c:/mydir\\xorg.conf’, ‘c:/mydir\\клав_тренажер.odt’, ‘c:/mydir\\Расписание 2004.xls’, ‘c:/mydir\\dir2a\\less1.doc’, ‘c:/mydir\\dir2a\\Patro_Nia.ogg’, ‘c:/mydir\\dir2a\\Расписание 2004.doc’, ‘c:/mydir\\dir2a\\dir3\\bottom_.php’, ‘c:/mydir\\dir2a\\dir3\\equador.mid’, ‘c:/mydir\\dir2a\\dir3\\less1.html’, ‘c:/mydir\\dir2a\\dir3\\net_Alt.txt’, ‘c:/mydir\\dir2a\\dir3\\poly995.mid’, ‘c:/mydir\\dir2a\\dir3\\top_.php’, ‘c:/mydir\\dir2b\\clear.gif’, ‘c:/mydir\\dir2b\\fon1.jpg’, ‘c:/mydir\\dir2b\\logo4.png’, ‘c:/mydir\\dir2b\\okulov245.pas’, ‘c:/mydir\\dir2b\\okulov273.pas’, ‘c:/mydir\\dir2b\\plan1.jpg’, ‘c:/mydir\\dir2b\\plan2.jpg’]

Пример имеет, скорее всего, демонстрирующее, а не практическое значение, т.к.
результирующий список содержит повторяющиеся части строк. Поэтому лучше напрямую работать с
кортежем, извлеченным из объекта-генератора.

Источник

Перебирать файлы в каталоге в Python

В этом посте будет обсуждаться, как перебирать файлы в каталоге в Python.

1. Использование os.listdir() функция

Простое решение для перебора файлов в каталоге — использование os.listdir() функция. Он возвращает список файлов и подкаталогов, присутствующих в указанном каталоге. Чтобы получить только файлы, вы можете отфильтровать список с помощью os.path.isfile() функция:

Чтобы получить файлы определенного расширения, скажите .txt , вы можете добавить условие для проверки расширения файла.

2. Использование os.scandir() функция

Начиная с Python 3.5, рассмотрите возможность использования os.scandir() функция, когда вам нужна информация о типе файла или атрибуте файла. Он возвращает записи каталога и информацию об атрибутах файла, обеспечивая значительно более высокую производительность по сравнению с os.listdir() .

3. Использование pathlib модуль

В Python 3.4 вы также можете использовать pathlib модуль. Чтобы перебрать файлы в каталоге, используйте Path.glob(pattern) функция, которая размещает заданный относительный шаблон в указанном каталоге и дает соответствующие файлы.

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

В качестве альтернативы вы можете использовать Path.iterdir() функция, которая возвращает объекты пути содержимого каталога. Чтобы получить расширение файла, используйте suffix имущество:

4. Использование os.walk() функция

Если вам нужно также искать подкаталоги, рассмотрите возможность использования os.walk() функция. Это дает 3-кортеж (dirpath, dirnames, filenames) для всего, что доступно из указанного каталога, где dirpath это путь к каталогу, dirnames это список имен подкаталогов в dirpath, и filenames представляет собой список имен файлов, не входящих в каталоги, в каталоге dirpath.

Источник

Получение списка файлов в каталоге и подкаталогах в Python

Чтобы получить список всех файлов в папке или каталоге и его подпапках или подкаталогах в Python, мы будем использовать функцию os.walk(), которая создает итератор по текущему каталогу, его подпапкам и файлам.

В этом руководстве мы рассмотрим некоторые примеры, демонстрирующие, как получить список всех файлов в каталоге и его подкаталогах.

Пример 1

В этом примере мы возьмем путь к каталогу и попытаемся рекурсивно перечислить все файлы в каталоге и его подкаталогах.

import os path ="C:/workspace/python" #we shall store all the file names in this list filelist = [] for root, dirs, files in os.walk(path): for file in files: #append the file name to the list filelist.append(os.path.join(root,file)) #print all the file names for name in filelist: print(name)

В приведенной выше программе мы использовали вложенный For Loop.

C:\pythonexamples\python-create-directory.png C:\pythonexamples\python-remove-file.png C:\pythonexamples\scatter-plot-example.py C:\pythonexamples\tkinter-example.py C:\pythonexamples\sample\example.py C:\pythonexamples\sample\example1.py

Пример 2: с определенным расширением

В этом примере мы возьмем путь к каталогу и попытаемся рекурсивно перечислить все файлы с определенным расширением .py в этом каталоге и его подкаталогах.

import os path ="C:\workspace\python" for root, dirs, files in os.walk(path): for file in files: if(file.endswith(".py")): print(os.path.join(root,file))
C:\pythonexamples\scatter-plot-example.py C:\pythonexamples\tkinter-example.py C:\pythonexamples\sample\example.py C:\pythonexamples\sample\example1.py

В этом руководстве мы узнали получения списка всех файлов в каталоге и его подкаталогах.

Источник

Список файлов Python в каталоге и подкаталогах

В Python есть модуль ОС, предоставляющий функции для работы с файлами. Мы можем перечислить файлы в каталоге и подкаталоге программно в Python, используя модуль ОС. В этой статье мы обсудим различные методы создания списка всех файлов в дереве каталогов и подкаталогах..

Как распечатать список файлов Python

Давайте напечатаем все файлы, перечисленные в нашем текущем рабочем каталоге. Во-первых, вам нужно импортировать модуль os в свой файл, а затем использовать функцию os.listdir().

Напишите следующий код в файле app.py.

Список файлов в каталоге и подкаталогах с os.listdir()

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

В приведенном выше коде мы определили функцию с именем getFiles(), которая принимает один аргумент с именем dirname. Затем мы создаем список и добавляем полный путь к файлам.

Итак, он начнет перебирать один за другим файл и добавит его полный путь в список, и, в конце концов, мы получим наш полный список файлов.

Получение списка файлов в каталоге и подкаталогах с помощью os.walk()

Модуль python os предоставляет функцию walk() для перебора дерева каталогов.

Функция os.walk() перебирает дерево каталогов при указании пути и для каждого каталога или подкаталога возвращает кортеж, содержащий(, , ).

Перечисление всех файлов txt в указанном каталоге с Glob в Python

В приведенном выше примере мы использовали понимание списка, чтобы получить список всех файлов с расширением .txt.

Итак, в этом примере мы выводим только текстовые файлы, а не все файлы.

Список всех каталогов в указанном каталоге + подкаталоги(**)

Заключение

Список файлов Python в каталоге и подкаталогах

Чтобы вывести каталоги, подкаталоги и файлы, Python имеет отличную встроенную поддержку, которая делает всю работу за вас. Управление файлами и работа с ними — повседневная работа любого программиста.

В этой статье мы увидели, как перечислить все каталоги, подкаталоги и файлы, используя методы Python os.walk(), blob.blob() и Python os.listdir(). Наконец, Python перечисляет все файлы в каталоге, и пример с подкаталогами заканчивается.

Автор статей и разработчик, делюсь знаниями.

Источник

Читайте также:  Html code open pdf
Оцените статью