Как открыть несколько файлов в Python

Обновлено: 06.07.2024

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

Открыть все файлы в каталоге с помощью функции os.listdir() в Python

Функция listdir() внутри модуля os используется для вывода списка всех файлов в указанном каталоге. Эта функция принимает указанный путь к каталогу в качестве входного параметра и возвращает имена всех файлов внутри этого каталога. Мы можем просмотреть все файлы внутри определенного каталога с помощью функции os.listdir() и открыть их с помощью функции open() в Python.

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

Мы прочитали текст из трех файлов внутри каталога files/ и распечатали его на терминале в приведенном выше коде. Сначала мы использовали цикл for/in с функцией os.listdir() для перебора каждого файла, найденного в каталоге файлов. Затем мы открывали каждый файл в режиме чтения с помощью функции open() и печатали текст внутри каждого файла.

Открыть все файлы в каталоге с помощью функции glob.glob() в Python

Модуль glob используется для перечисления файлов внутри определенного каталога. Функция glob() внутри модуля glob используется для получения списка файлов или подкаталогов, соответствующих указанному шаблону внутри указанного каталога. Функция glob.glob() принимает шаблон в качестве входного параметра и возвращает список файлов и подкаталогов внутри указанного каталога.

Мы можем просмотреть все текстовые файлы внутри определенного каталога с помощью функции glob.glob() и открыть их с помощью функции open() в Python. В следующем примере кода показано, как мы можем открыть все файлы в каталоге с помощью функций glob.glob() и open():

Мы прочитали текст из трех файлов внутри каталога files/ и распечатали его на терминале в приведенном выше коде. Сначала мы использовали цикл for/in с функцией glob.glob() для перебора каждого файла, найденного в каталоге файлов. Затем мы открывали каждый файл в режиме чтения с помощью функции open() и печатали текст внутри каждого файла.

Статьи DelftStack написаны такими же фанатами программного обеспечения, как и вы. Если вы также хотите внести свой вклад в DelftStack, написав платные статьи, вы можете посетить страницу «Написать для нас».

На предыдущем уроке мы анализировали значения из выходных файлов. Хотя вы, возможно, видели полезность такой вещи, вы также могли задаться вопросом, почему мы просто не искали файл, вырезали и вставляли нужные значения в электронную таблицу. Если у вас есть только 1 или 2 файла, это может быть очень разумным решением. Но что, если бы вам нужно было проанализировать 100 файлов? А если бы у вас было 1000? В таком случае метод вырезания и вставки будет очень утомительным и трудоемким.

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

Для анализа нескольких файлов нам потребуется импортировать библиотеку Python. Библиотека — это набор модулей, содержащих функции. Функции внутри библиотеки или модуля обычно связаны друг с другом. Использование библиотек и Python уменьшает объем кода, который вам нужно написать. На прошлом уроке мы импортировали os.path — модуль, обрабатывающий для нас пути к файлам.

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

Мы собираемся импортировать две библиотеки. Одной из них является библиотека os, которая управляет функциями, связанными с операционной системой вашего компьютера. Мы использовали эту библиотеку в прошлом уроке для обработки путей к файлам. Другая — это библиотека glob, которая содержит функции, помогающие нам анализировать несколько файлов. Если мы собираемся анализировать несколько файлов, нам сначала нужно указать, где эти файлы расположены.

Упражнение

Как бы вы использовали модуль os.path, чтобы указать каталог, в котором находятся ваши выходные файлы?

Решение

Чтобы получить все файлы, соответствующие определенному шаблону, мы будем использовать подстановочный знак * .

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

Библиотека glob содержит функцию, также называемую glob , которая находит файлы и каталоги, имена которых соответствуют шаблону. Мы предоставляем эти шаблоны в виде строк: символ * соответствует нулю или более символам, а ? соответствует любому одному символу. Мы можем использовать это, чтобы получить имена всех файлов CSV в текущем каталоге:

Как видно из этих примеров, результатом glob.glob является список путей к файлам и каталогам в произвольном порядке. Это означает, что мы можем перебрать его, чтобы сделать что-то с каждым именем файла по очереди. В нашем случае «что-то», что мы хотим сделать, — это создать набор графиков для каждого файла в нашем наборе данных о воспалении.

Если мы хотим начать с анализа только первых трех файлов в алфавитном порядке, мы можем использовать встроенную функцию sorted для создания нового отсортированного списка из вывода glob.glob:

Вывод первой итерации петля. Три линейных графика, показывающие среднесуточное, максимальное и минимальное воспаление за 40-дневный период для всех пациентов в первом наборе данных». /><br /></p>
<p><img class=

Доктор. Маверик признается, что они сфабриковали клинические данные после того, как узнали, что первоначальное испытание страдало рядом проблем, включая ненадежную запись данных и плохой отбор участников.Они создали поддельные данные, чтобы доказать, что их лекарство работает, и когда мы попросили больше данных, они попытались сгенерировать больше поддельных наборов данных, а также несколько раз добавили исходный набор данных низкого качества, чтобы попытаться сделать все испытания немного больше. «реалистичный».

Поздравляем! Мы изучили данные о воспалении и доказали, что наборы данных были созданы синтетическим путем.

Но было бы стыдно выбрасывать наборы синтетических данных, которые уже так многому нас научили, поэтому мы простим воображаемого доктора Маверика и продолжим использовать данные, чтобы научиться программировать.

Скажем, я работаю над двумя отдельными файлами .py в IDLE, которые являются частью
одной и той же программы. Есть ли у кого-нибудь проблемы, когда при изменении одного файла и
запуске другого, изменения, сделанные в первом, не обновляются?

Обычно я просто закрываю все файлы и перезапускаю IDLE, но это неудобно.
Возможно, потому что я всегда щелкаю правой кнопкой мыши -> редактировать с помощью IDLE (в Windows). Это
также запускает отдельную оболочку Python, которую я всегда закрываю.




< /p>

Скажем, я работаю над двумя отдельными файлами .py в IDLE, которые являются частью
одной и той же программы. Есть ли у кого-нибудь проблемы, когда при изменении одного файла и
запуске другого изменения, сделанные в первом, не обновляются?

Обычно я просто закрываю все файлы и перезапускаю IDLE, но это неудобно.
Возможно, потому что я всегда щелкаю правой кнопкой мыши -> редактировать с помощью IDLE (в Windows). Это
также запускает отдельную оболочку Python, которую я всегда закрываю.

В последней версии IDLE *предполагалось* исправить это путем перезапуска
сеанса IDLE при запуске скрипта.
К сожалению, они не смогли заставить его работать в версии для Windows,
потому что он использует один и тот же сокет при запуске нескольких
версий. В результате IDLE практически непригоден для
серьезной работы с окнами. :-(

Есть способ обойти это. Если вы редактируете ассоциацию файлов для файлов
..py и .pyw (в меню окна проводника выберите инструменты и
параметры папки, а затем выберите типы файлов). Удалите -n из
командной строки, с которой запускается IDLE.. это позволяет запускать IDLE
с подпроцессом. *ОДНАКО* если вы сделаете это, вы сможете
открыть только одну версию IDLE за раз, второй и третий
модули/скрипты, которые вы редактируете, должны быть открыты с помощью 'open' или 'open
модуль». Если откроется второе окно оболочки, оно
зависнет.

У меня есть две ассоциации файлов: одна "Редактировать с помощью подпроцесса IDLE" и одна
"Редактировать с помощью подпроцесса IDLE без подпроцесса". они вполне успешно сосуществуют,
даже при одновременном запуске.
Для файлов, редактируемых в IDLE *с* подпроцессом,
сеанс будет перезапущен при каждом запуске скрипта. который повторно импортирует все
модули и, следовательно, включает ваши изменения. немного бреда
хотя.

Читайте также: