Как указать в python
Работа с текстовыми файлами в Python 3
Python – отличный инструмент для обработки данных. Вполне вероятно, что программа, которую вы пишете, будет управлять данными или выполнять операции чтения и записи. Потому особенно полезно знать, как Python обрабатывает различные форматы файлов, в которых хранятся разные типы данных.
Для примера представим программу Python, которая проверяет список пользователей для контроля доступа. Список пользователей, вероятно, будет храниться в текстовом файле. Ещё один пример: программа для выполнения финансового анализа получает вводные данные из сохраненной таблицы. Как видите, вне зависимости от приложения, входные и выходные данные задействованы практически всегда.
В данном руководстве речь идёт о типах форматов, которые поддерживает Python 3. Также руководство научит вас обрабатывать текстовые файлы.
Требования
Для выполнения руководства вам понадобится предварительно настроенная среда Python 3. Все необходимые инструкции вы найдёте в следующих статьях:
Форматы файлов в Python 3
Python очень гибкий и может относительно легко обрабатывать множество различных форматов файлов. Вот основные форматы:
Формат | Описание |
txt | Обычный текстовый файл, который хранит данные в виде символов (или строк) и исключает структурированные метаданные. |
CSV | Файл, который хранит данные в виде таблицы; для структурирования хранимых данных используются запятые (или другие разделители). |
HTML | Файл Hypertext Markup Language хранит структурированные данные; такие файлы используются большинством сайтов. |
JSON | Простой файл JavaScript Object Notation, один из наиболее часто используемых форматов для хранения и передачи данных. |
Данное руководство рассматривает только формат txt.
1: Создание текстового файла
Сначала нужно создать тестовый файл для работы. Откройте текстовый редактор и создайте файл days.txt. Добавьте в новый файл список дней недели:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Сохраните файл и запомните его местонахождение (это нужно для дальнейшей работы). В данном случае файл будет храниться в каталоге /users/8host/days.txt.
2: Открытие файла
Создайте сценарий files.py в текстовом редакторе и для простоты сохраните его в тот же каталог (/users/8host/).
Чтобы открыть файл в Python, нужно связать файл на диске с переменной Python. Сначала сообщите Python, где находится нужный файл. Чтобы открыть какой-либо файл, Python должен знать путь к этому файлу. Путь к файлу days.txt выглядит так: /users/8host/days.txt.
В файле files.py создайте переменную path и укажите в ней путь к файлу days.txt.
Теперь можно использовать функцию open(), чтобы открыть файл days.txt. В качестве первого аргумента функция open() требует путь к файлу, который нужно открыть. Эта функция имеет много других параметров. Одним из основных параметров является режим; это опциональная строка, которая позволяет выбрать режим открытия файла:
Попробуйте открыть файл для чтения. Для этого создайте переменную days_file и задайте в ней опцию open() и режим ‘r’, чтобы открыть файл days.txt только для чтения.
3: Чтение файла
Теперь вы можете работать с файлом. В зависимости от режима, в котором открыт файл, вы можете выполнить в нём те или иные действия. Для чтения информации Python предлагает три взаимосвязанные операции.
Прочитав первую строку файла, операция readline при следующем запуске выведет вторую строку.
days_file.readlines()
[‘Monday\n’, ‘Tuesday\n’, ‘Wednesday\n’, ‘Thursday\n’, ‘Friday\n’, ‘Saturday\n’, ‘Sunday\n’]
Читая файлы в Python, важно помнить следующее: если файл был прочитан с помощью одной из операций чтения, его нельзя прочитать снова. К примеру, если вы запустили days_file.read(), а затем days_file.readlines(), вторая операция вернёт пустую строку. Потому нужно открывать новую переменную файла всякий раз, когда вы хотите прочитать данные из файла.
4: Запись в файл
Теперь попробуйте создать новый файл, который будет включать заголовок Days of the Week. Сначала создайте переменную title в файле files.py.
title = ‘Days of the Week\n’
Сохраните дни недели в строковой переменной days. Ниже показан код из всех вышеупомянутых разделов (чтобы было понятнее); файл открывается в режиме чтения, выходные данные операции чтения сохраняются в новой переменной days.
path = ‘/users/8host/days.txt’
days_file = open(path,’r’)
days = days_file.read()
В файле есть переменные для заголовка и содержимого файла days. Теперь можно записать данные в новый файл. Сначала укажите местонахождение файла (/users/8host/), затем – название нового файла (например, new_days.txt). Путь к новому файлу можно указать в переменной new_path. Чтобы открыть новый файл для записи, используйте функцию open() с параметром ‘w’.
new_path = ‘/users/8host/new_days.txt’
new_days = open(new_path,’w’)
Примечание: Если файл с таким именем (new_days.txt) уже существует, при открытии в режиме ‘w’ его содержимое пострадает.
new_days.write(title)
print(title)
new_days.write(days)
print(days)
После этого нужно закрыть файл.
5: Закрытие файла
6: Проверка кода
Прежде чем запустить сценарий files.py, убедитесь, что его содержимое выглядит так:
path = ‘/users/8host/days.txt’
days_file = open(path,’r’)
days = days_file.read()
new_path = ‘/users/8host/new_days.txt’
new_days = open(new_path,’w’)
title = ‘Days of the Week\n’
new_days.write(title)
print(title)
new_days.write(days)
print(days)
days_file.close()
new_days.close()
Сохраните код, откройте терминал и запустите сценарий Python:
В терминале появится вывод:
Days of the Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Теперь попробуйте открыть файл new_days.txt. Если всё работает должным образом, файл будет выглядеть так:
Days of the Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Заключение
Теперь вы умеете обрабатывать и управлять простыми текстовыми файлами в Python 3: открывать и читать файлы, записывать в них новые данные и закрывать их.
Функции и их аргументы
В этой статье я планирую рассказать о функциях, именных и анонимных, инструкциях def, return и lambda, обязательных и необязательных аргументах функции, функциях с произвольным числом аргументов.
Именные функции, инструкция def
Определим простейшую функцию:
Инструкция return говорит, что нужно вернуть значение. В нашем случае функция возвращает сумму x и y.
Теперь мы ее можем вызвать:
Функция может быть любой сложности и возвращать любые объекты (списки, кортежи, и даже функции!):
Функция может и не заканчиваться инструкцией return, при этом функция вернет значение None:
Аргументы функции
Функция может принимать произвольное количество аргументов или не принимать их вовсе. Также распространены функции с произвольным числом аргументов, функции с позиционными и именованными аргументами, обязательными и необязательными.
Функция также может принимать переменное количество позиционных аргументов, тогда перед именем ставится *:
Функция может принимать и произвольное число именованных аргументов, тогда перед именем ставится **:
В переменной kwargs у нас хранится словарь, с которым мы, опять-таки, можем делать все, что нам заблагорассудится.
Анонимные функции, инструкция lambda
Анонимные функции могут содержать лишь одно выражение, но и выполняются они быстрее. Анонимные функции создаются с помощью инструкции lambda. Кроме этого, их не обязательно присваивать переменной, как делали мы инструкцией def func():
lambda функции, в отличие от обычной, не требуется инструкция return, а в остальном, ведет себя точно так же:
Работа с файлами в Python
В Python есть несколько встроенных модулей и функций для работы с файлами. Эти функции распределены по нескольким модулям, таким как os, os.path, shutil и pathlib, и это всего лишь некоторые из них. В этом уроке собраны в одном месте многие функции, которые вам необходимо знать для выполнения наиболее распространенных операций с файлами в Python.
В этом уроке вы узнаете, как:
Содержание
Шаблон Python «with open(…) as …» ↑
Чтение и запись данных в файлы с помощью Python довольно просты. Для этого необходимо сначала открыть файлы в соответствующем режиме. Вот пример того, как использовать шаблон Python «with open (…) as…» для открытия текстового файла и чтения его содержимого:
open() принимает в качестве аргументов имя файла и режим. r открывает файл в режиме только для чтения. Чтобы записать данные в файл, вместо этого передайте w в качестве аргумента:
В приведенных выше примерах open() открывает файлы для чтения или записи и возвращает дескриптор файла (в данном случае f ), который предоставляет методы, которые можно использовать для чтения или записи данных в файл. Ознакомьтесь с разделами Чтение и запись файлов в Python и Working With File I/O in Python для получения дополнительной информации о том, как читать и записывать файлы.
Получение списка каталогов ↑
Предположим, в вашем текущем рабочем каталоге есть подкаталог my_directory со следующим содержимым:
Встроенный модуль os имеет ряд полезных функций, которые можно использовать для вывода списка содержимого каталогов и фильтрации результатов. Чтобы получить список всех файлов и папок в определенном каталоге файловой системы, используйте os.listdir() в устаревших версиях Python или os.scandir() в Python 3.x. os.scandir() — предпочтительный метод для использования, если вы также хотите получить свойства файла и каталога, такие как размер файла и дату модификации.
Список каталогов в устаревших версиях Python ↑
В версиях Python до Python 3 для получения списка каталого используетсяв метод os.listdir() :
os.listdir() возвращает список Python, содержащий имена файлов и подкаталогов в каталоге, заданном аргументом пути:
Такой список каталогов нелегко прочитать. Распечатка вывода вызова os.listdir() с использованием цикла помогает очистить ситуацию:
Список каталогов в современных версиях Python ↑
os.scandir() был представлен в Python 3.5 и задокументирован в PEP 471. os.scandir() возвращает итератор, а не список при вызове:
ScandirIterator указывает на все записи в текущем каталоге. Вы можете перебрать содержимое итератора и распечатать имена файлов:
Другой способ получить список каталогов — использовать модуль pathlib:
Выполнение приведенного выше кода приводит к следующему:
Использование pathlib.Path() или os.scandir() вместо os.listdir() является предпочтительным способом получения списка каталогов, особенно когда вы работаете с кодом, которому требуется информация о типе файла и атрибутах файла. pathlib.Path() предлагает большую часть функций обработки файлов и путей, которые есть в os и shutil, и его методы более эффективны, чем некоторые из этих модулей. Вскоре мы обсудим, как получить свойства файла.
Вот еще раз функции листинга каталогов:
Функция | Описание |
---|---|
os.listdir() | Возвращает список всех файлов и папок в каталоге |
os.scandir() | Возвращает итератор всех объектов в каталоге, включая информацию об атрибутах файла |
pathlib.Path.iterdir() | Возвращает итератор всех объектов в каталоге, включая информацию об атрибутах файла |
Эти функции возвращают список всего в каталоге, включая подкаталоги. Это не всегда может быть тем поведением, которое вам нужно. В следующем разделе будет показано, как отфильтровать результаты из списка каталогов.
Список всех файлов в каталоге ↑
Более простой способ перечислить файлы в каталоге — использовать os.scandir() или pathlib.Path() :
Вот как вывести список файлов в каталоге с помощью pathlib.Path() :
Приведенный выше код можно сделать более кратким, если объединить цикл for и оператор if в одно выражение генератора.
Модифицированная версия выглядит так:
Список подкаталогов ↑
Чтобы вывести список подкаталогов вместо файлов, используйте один из следующих способов. Вот как использовать os.listdir() и os.path() :
Вот как использовать os.scandir() :
Вот как использовать pathlib.Path() :
Получение атрибутов файла ↑
os.scandir() и pathlib.Path() получают список каталогов с объединенными атрибутами файлов. Это может быть потенциально более эффективным, чем использование os.listdir() для вывода списка файлов и последующего получения информации об атрибутах для каждого файла.
В приведенных ниже примерах показано, как получить время последнего изменения файлов в my_directory/. Вывод в секундах:
В модуле pathlib есть соответствующие методы для получения информации о файлах, которые дают те же результаты:
Вместе эти директивы производят вывод, который выглядит следующим образом:
Синтаксис преобразования даты и времени в строки может сбивать с толку. Чтобы узнать больше об этом, ознакомьтесь с официальной документацией по нему. Еще одна удобная ссылка, которую легко запомнить, — это http://strftime.org/.
Создание каталогов ↑
Рано или поздно программы, которые вы пишете, должны будут создавать каталоги, чтобы хранить в них данные. os и pathlib включают функции для создания каталогов. Мы рассмотрим это:
Функция | Описание |
---|---|
os.mkdir() | Создает единственный подкаталог |
pathlib.Path.mkdir() | Создает один или несколько каталогов |
os.makedirs() | Создает несколько каталогов, включая промежуточные каталоги |
Создание единого каталога ↑
Чтобы создать единый каталог, передайте путь к каталогу в качестве параметра функции os.mkdir() :
Если путь уже существует, mkdir() вызывает FileExistsError :
Чтобы избежать подобных ошибок, перехватывайте ошибку, когда она возникает, и дайте знать своему пользователю:
Это не вызовет ошибки, если каталог уже существует.
Создание нескольких каталогов ↑
В результате получите вложенную структуру каталогов, содержащую папки 2018, 10 и 05:
Передача parent = True в Path.mkdir() заставляет его создавать каталог 05 и все родительские каталоги, необходимые для того, чтобы путь был действительным.
Выполнение приведенного выше кода создает структуру каталогов, подобную приведенной ниже, за один раз:
Я предпочитаю использовать pathlib при создании каталогов, так как можно использовать ту же функцию для создания одиночных или вложенных каталогов.
Сопоставление имени файла с шаблоном ↑
Использование строковых методов ↑
Получив список файлов в каталоге одним из описанных выше методов, вы, скорее всего, захотите найти файлы, соответствующие определенному шаблону.
Вам доступны следующие методы и функции:
Каждый из них обсуждается ниже. Примеры в этом разделе будут выполняться в каталоге с именем some_directory, который имеет следующую структуру:
Если вы используете оболочку Bash, вы можете создать указанную выше структуру каталогов с помощью следующих команд:
Использование строковых методов ↑
Простое сопоставление с шаблоном имени файла с помощью fnmatch ↑
Более расширенное сопоставление с шаблоном ↑
Сопоставление с шаблоном имени файла с помощью glob ↑
Еще один полезный модуль для сопоставления с образцом — glob.
Например, ввод mv *.py python_files/ в оболочке UNIX перемещает (mv) все файлы с расширением .py из текущего каталога в каталог python_files. Символ * — это подстановочный знак, означающий «любое количество символов», а *.py — шаблон glob. Эта возможность оболочки недоступна в операционной системе Windows. Модуль glob добавляет эту возможность в Python, что позволяет программам Windows использовать эту функцию.
Вот пример того, как использовать glob для поиска всех исходных файлов Python (.py) в текущем каталоге:
glob.glob (‘*. py’) ищет все файлы с расширением .py в текущем каталоге и возвращает их в виде списка. glob также поддерживает подстановочные знаки в стиле оболочки для соответствия шаблонам:
Это найдет все текстовые файлы (.txt), которые содержат цифры в имени файла:
glob также упрощает рекурсивный поиск файлов в подкаталогах:
Вызов p.glob(‘*.P*’) возвращает объект-генератор, который указывает на все файлы в текущем каталоге, которые начинаются с буквы p в их расширении.
Напомним, вот таблица функций, которые мы рассмотрели в этом разделе:
Функция | Описание |
---|---|
startswith() | Проверяет, начинается ли строка с указанного шаблона и возвращает True или False |
endswith() | Проверяет, заканчивается ли строка указанным шаблоном и возвращает True или False |
fnmatch.fnmatch(имя файла, шаблон) | Проверяет, соответствует ли имя файла шаблону и возвращает True или False |
glob.glob() | Возвращает список имен файлов, соответствующих шаблону |
pathlib.Path.glob() | Находит шаблоны в именах путей и возвращает объект-генератор |
Просмотр каталогов и обработка файлов ↑
os.walk() по умолчанию перемещается по каталогам сверху вниз:
os.walk() возвращает три значения на каждой итерации цикла:
На каждой итерации он распечатывает имена найденных подкаталогов и файлов:
Чтобы пройти по дереву каталогов снизу вверх, передайте аргумент ключевого слова topdown = False в os.walk() :
Передача аргумента topdown = False заставит os.walk() сначала распечатать файлы, которые она находит в подкаталогах:
Создание временных файлов и каталогов ↑
Python предоставляет удобный модуль для создания временных файлов и каталогов, называемый tempfile.
tempfile можно использовать для временного открытия и хранения данных в файле или каталоге во время работы вашей программы. tempfile обрабатывает удаление временных файлов, когда ваша программа завершает работу с ними.
Вот как создать временный файл:
Временные файлы и каталоги, созданные с помощью tempfile, хранятся в специальном системном каталоге для хранения временных файлов. Python ищет в стандартном списке каталогов тот, в котором пользователь может создавать файлы.
В Windows каталоги — C:\TEMP, C:\TMP, \TEMP и \TMP в указанном порядке. На всех других платформах это каталоги /tmp, /var/tmp и /usr/tmp в указанном порядке. В крайнем случае, tempfile сохранит временные файлы и каталоги в текущем каталоге.
Создаётся временный файл и считывает из него данные. Как только содержимое файла считывается, временный файл закрывается и удаляется из файловой системы.
tempfile также можно использовать для создания временных каталогов. Давайте посмотрим, как это можно сделать с помощью tempfile.TemporaryDirectory() :
Удаление файлов и каталогов ↑
Вы можете удалять отдельные файлы, каталоги и целые деревья каталогов, используя методы, найденные в модулях os, shutil и pathlib. В следующих разделах описывается, как удалить файлы и каталоги, которые вам больше не нужны.
Удаление файлов в Python ↑
Удаление файла с помощью os.unlink() аналогично тому, как вы это делаете с помощью os.remove() :
В следующем примере показано, как использовать обработку исключений для обработки ошибок при удалении файлов:
Наконец, можно использовать pathlib.Path.unlink() для удаления файлов:
Удаление каталогов ↑
Стандартная библиотека предлагает следующие функции для удаления каталогов:
В качестве альтернативы вы можете использовать pathlib для удаления каталогов:
Удаление всех деревьев каталогов ↑
Чтобы удалить непустые каталоги и целые деревья каталогов, Python предлагает shutil.rmtree() :
Здесь просматривается дерево каталогов и делается попытка удалить каждый найденный каталог. Если каталог не пустой, возникает ошибка OSError и этот каталог пропускается. В таблице ниже перечислены функции, рассматриваемые в этом разделе:
Функция | Описание |
---|---|
os.remove() | Удаляет файл и не удаляет каталоги |
os.unlink() | Идентичен os.remove() и удаляет один файл |
pathlib.Path.unlink() | Удаляет файл и не может удалять каталоги |
os.rmdir() | Удаляет пустой каталог |
pathlib.Path.rmdir() | Удаляет пустой каталог |
shutil.rmtree() | Удаляет все дерево каталогов и может использоваться для удаления непустых каталогов |
Копирование, перемещение и переименование файлов и каталогов ↑
Python поставляется с модулем shutil. shutil — это сокращение от short for shell utilities (служебных программ оболочки). Он обеспечивает ряд высокоуровневых операций с файлами для поддержки копирования, архивирования и удаления файлов и каталогов. В этом разделе вы узнаете, как перемещать и копировать файлы и каталоги.
Копирование файлов в Python ↑
Чтобы сохранить все метаданные файла при копировании, используйте shutil.copy2() :
Копирование каталогов ↑
В то время как shutil.copy() копирует только один файл, shutil.copytree() копирует весь каталог и все, что в нем содержится. shutil.copytree (src, dest) принимает два аргумента: исходный каталог и целевой каталог, в который будут скопированы файлы и папки. Вот пример того, как скопировать содержимое одной папки в другое место:
Перемещение файлов и каталогов ↑
src — это файл или каталог, который нужно переместить, а dst — это место назначения:
Переименование файлов и каталогов ↑
В Python есть функция os.rename (src, dst) для переименования файлов и каталогов:
Другой способ переименовать файлы или каталоги — использовать rename() из модуля pathlib:
Архивирование ↑
Архивы — это удобный способ упаковать несколько файлов в один. Двумя наиболее распространенными типами архивов являются ZIP и TAR. Написанные вами программы Python могут создавать, читать и извлекать данные из архивов. В этом разделе вы узнаете, как читать и писать в оба формата архивов.
Чтение ZIP-файлов ↑
Чтобы получить список файлов в архиве, вызовите namelist() объекта ZipFile :
В следующем примере показано, как получить более подробную информацию об архивных файлах в Python REPL. Предположим, что модуль zipfile уже импортирован, а bar_info — это тот же объект, который вы создали в предыдущих примерах:
bar_info содержит подробную информацию о bar.py, такую как его размер при сжатии и полный путь.
В первой строке показано, как получить дату последнего изменения файла. В следующей строке показано, как получить размер файла после сжатия. Последняя строка показывает полный путь к bar.py в архиве.
Извлечение ZIP-архивов ↑
Эти методы по умолчанию извлекают файлы в текущий каталог. Оба они принимают необязательный параметр пути, который позволяет указать другой каталог для извлечения файлов. Если каталог не существует, то он создается автоматически. Чтобы извлечь файлы из архива, выполните следующие действия:
Извлечение данных из архивов, защищенных паролем ↑
Создание новых ZIP-архивов ↑
Чтобы создать новый ZIP-архив, вы открываете объект ZipFile в режиме записи ( w ) и добавляете файлы, которые хотите заархивировать:
В этом примере new_zip открывается в режиме записи, и каждый файл в file_list добавляется в архив. Когда набор операторов with завершается, new_zip закрывается. Открытие ZIP-файла в режиме записи стирает содержимое архива и создает новый архив.
Чтобы добавить файлы в существующий архив, откройте объект ZipFile в режиме добавления, а затем добавьте файлы:
Здесь вы открываете архив new.zip, созданный в предыдущем примере, в режиме добавления. Открытие объекта ZipFile в режиме добавления позволяет добавлять новые файлы в ZIP-файл, не удаляя его текущее содержимое. После добавления файлов в ZIP-файл оператор with выходит из контекста и закрывает ZIP-файл.
Открытие архивов TAR ↑
Файлы TAR представляют собой несжатые файловые архивы, такие как ZIP. Их можно сжать с помощью методов сжатия gzip, bzip2 и lzma. Класс TarFile позволяет читать и записывать архивы TAR.
Сделайте это, чтобы прочитать из архива:
Режим | Действие |
---|---|
r | Открывает архив для чтения с прозрачным сжатием |
r:gz | Открывает архив для чтения со сжатием gzip |
r:bz2 | Открывает архив для чтения со сжатием bzip2 |
r:xz | Открывает архив для чтения со сжатием lzma |
w | Открывает архив для записи без сжатия |
w:gz | Открывает архив для записи в сжатом формате gzip |
w:xz | Открывает архив для записи в сжатом формате lzma |
а | Открывает архив для добавления без сжатия |
Возвращается список с именами содержимого архива.
Примечание. Чтобы показать вам, как использовать различные методы объекта tarfile, файл TAR в примерах открывается и закрывается вручную в интерактивном сеансе REPL.
Такое взаимодействие с файлом TAR позволяет увидеть результат выполнения каждой команды. Обычно вы хотите использовать диспетчер контекста для открытия файловых объектов.
К метаданным каждой записи в архиве можно получить доступ с помощью специальных атрибутов:
Извлечение файлов из архива TAR ↑
В этом разделе вы узнаете, как извлекать файлы из архивов TAR, используя следующие методы:
.extractall() имеет необязательный аргумент пути, чтобы указать, куда должны идти извлеченные файлы. Здесь архив распаковывается в распакованный каталог. Следующие команды показывают, что архив был успешно извлечен:
Создание новых архивов TAR ↑
Вот как это сделать:
Сначала составляется список файлов, которые нужно добавить в архив, чтобы не приходилось добавлять каждый файл вручную.
В следующей строке с помощью диспетчера контекста открывается новый архив с именем packages.tar в режиме записи. Открытие архива в режиме записи ( ‘w’ ) позволяет вам записывать в архив новые файлы.Все существующие файлы в архиве удаляются и создается новый архив.
После того, как архив создан и заполнен, менеджер контекста с автоматически закрывает его и сохраняет в файловой системе. Последние три строки открывают только что созданный архив и распечатывают имена содержащихся в нем файлов. Чтобы добавить новые файлы в существующий архив, откройте архив в режиме добавления ( ‘a’ ):
Открытие архива в режиме добавления позволяет добавлять в него новые файлы, не удаляя уже существующие.
Работа со сжатыми архивами ↑
Например, для чтения или записи данных в архив TAR, сжатый с помощью gzip, используйте режимы ‘r:gz’ или ‘w:gz’ соответственно:
Режим ‘w:gz’ открывает архив для записи, сжатой gzip, а ‘r:gz’ открывает архив для чтения сжатого gzip. Открытие сжатых архивов в режиме добавления невозможно. Чтобы добавить файлы в сжатый архив, вам необходимо создать новый архив.
Более простой способ создания архивов ↑
Стандартная библиотека Python также поддерживает создание архивов TAR и ZIP с использованием высокоуровневых методов в модуле shutil. Утилиты архивирования в shutil позволяют создавать, читать и извлекать архивы ZIP и TAR. Эти утилиты полагаются на модули tarfile и zipfile нижнего уровня.
Работа с архивами с помощью shutil.make_archive()
shutil.make_archive() принимает как минимум два аргумента: имя архива и формат архива.
Вот как создать архив TAR с помощью shutil:
Чтение нескольких файлов ↑
Python поддерживает чтение данных из нескольких входных потоков или из списка файлов через модуль fileinput. Этот модуль позволяет быстро и легко перебирать содержимое одного или нескольких текстовых файлов. Вот типичный способ использования файлового ввода:
Использование fileinput для перебора нескольких файлов
Давайте воспользуемся fileinput, чтобы создать грубую версию общей утилиты UNIX cat. Утилита cat последовательно читает файлы, записывая их на стандартный вывод. Если в аргументах командной строки указано несколько файлов, cat объединит текстовые файлы и отобразит результат в терминале:
Выполнение этого в двух текстовых файлах в моем текущем каталоге дает следующий результат:
Заключение ↑
Теперь вы знаете, как использовать Python для выполнения наиболее распространенных операций с файлами и группами файлов. Вы узнали о различных встроенных модулях, используемых для чтения, поиска и управления ими.
Теперь вы готовы использовать Python для:
Опубликовано Вадим В. Костерин
ст. преп. кафедры ЦЭиИТ. Автор более 130 научных и учебно-методических работ. Лауреат ВДНХ (серебряная медаль). Посмотреть больше записей