Запись списка в файл с помощью python
Содержание:
- Изменить вещи
- Заворачивать
- 4: Запись в файл
- Запись текстового контента в файл
- Открытие файлов в Python
- Запись данных в файл с помощью Python
- Исключения в Python
- Чтение из файла Python
- Извлечение изображений из PDF с помощью PyMuPDF
- Выявление ошибок
- Способ 1. Загрузка CSV с многострочными полями
- Шаг 4 — Запись файла
- Закрытие файла в Python
- Ответы на вопросы читателей
- The file Object Attributes
- Считываем бинарный файл со строковыми данными в массив
- Закрытие открытого файла с помощью метода close()
- Чтение файла в Python
- Пишем в файлах в Python
- Заключение
Изменить вещи
- — изменить текущий рабочий каталог —
- — создать путь для последующего использования — нет короткого эквивалента в CLI
- — сделать каталог —
- — скопировать файл или каталог —
- — переместить файл или каталог —
- — удалить файл —
- — удалить каталог и все файлы и каталоги в нем —
Заворачивать
Теперь вы познакомились с основами взаимодействия с файловой системой в Python. Попробуйте эти команды в вашем интерпретаторе IPython для быстрой обратной связи. Затем объясните их кому-нибудь еще, чтобы закрепить ваши знания. Вы будете менее больны, чем если бы вы перемещали коробки с тетрадями по дому. Но упражнение было бы хорошо, так что теперь вы можете пойти в спортзал. ️️
Если вы хотите пойти глубже, посмотрите бесплатную электронную книгуАвтоматизируйте скучный материал с помощью Python,
Если вы хотите узнать о чтении и записи из файлов с Python, проверьте, Не забудьте использовать менеджер контекста, например, так:.
Я пишу о Python, Docker, науке о данных и многом другом. Если что-то из этого вас интересует, читайте большеВоти следуй за мной на Среднем.
Спасибо за чтение!
4: Запись в файл
Теперь попробуйте создать новый файл, который будет включать заголовок Days of the Week. Сначала создайте переменную title в файле files.py.
Сохраните дни недели в строковой переменной days. Ниже показан код из всех вышеупомянутых разделов (чтобы было понятнее); файл открывается в режиме чтения, выходные данные операции чтения сохраняются в новой переменной days.
В файле есть переменные для заголовка и содержимого файла days. Теперь можно записать данные в новый файл. Сначала укажите местонахождение файла (/users/8host/), затем – название нового файла (например, new_days.txt). Путь к новому файлу можно указать в переменной new_path. Чтобы открыть новый файл для записи, используйте функцию open() с параметром ‘w’.
Примечание: Если файл с таким именем (new_days.txt) уже существует, при открытии в режиме ‘w’ его содержимое пострадает.
Функция откроет файл, после чего вы можете записать в него данные с помощью операции <file>.write(). Операции записи необходим всего один параметр – строка, которую нужно записать в файл. Чтобы начать новую строку в файле, нужно явно использовать символ новой строки. Запишите в файл files.py заголовок и добавьте пару операторов print.
После этого нужно закрыть файл.
Запись текстового контента в файл
Питон позволяет дозаписывать данные в документ или наполнить его новой информацией. В режиме «w» файл всегда будет перезаписываться полностью.
Запись текста возможна двумя способами:
- Через функцию write(),
- При помощи функции print().
Пример кода:
Первая операция создает файл и записывает в него строчку «Python». Если он существует, то вызовется ошибка FileExistsError. Это своего рода защита от перезаписи.
Вторая операция добавит новую строку в документ. Теперь в нем будет две строки: «Python» и «is great».
В третьем случае старые данные из «somеtext.txt» удалятся, а вместо них будет внедрена новая строчка «Program».
Таким образом, если требуется дозаписывать информацию в файл, то используем режим «a», в противном случае ограничиваемся режимом «w».
Открытие файлов в Python
Python по умолчанию предоставляет нам функцию open(), которая предназначена для открытия файла. Рассмотрим пример использования данной функции.
file = open("text.txt") # Открытие файла file = open("C:/text.txt") #Открытие файла по его пути
Существует несколько режимов открытия файла, r — для чтения, w — для записи, a — для добавления. По умолчанию Python использует режим чтение файла
Режим | Описание |
r | Открывает файл для чтения. (по умолчанию) |
w | Открывает файл для записи. Создает новый файл, если он не существует, или усекает файл, если он существует. |
x | Открывает файл для эксклюзивного создания. Если файл уже существует, операция завершается неудачей. |
a | Открывает файл для добавления в конце файла без его усечения. Создает новый файл, если он не существует. |
t | Открывается в текстовом режиме. (по умолчанию) |
b | Открывается в двоичном режиме. |
+ | Открывает файл для обновления (чтения и записи) |
Режим открытия указывается следующим образом:
f = open("text.txt") #Режим r по умолчанию f = open("text.txt", "w")# Режим записи в файл f = open("text.txt", "a") # Режим добавления
Кроме того, надо учитывать кодировку файла, по умолчанию кодировка зависит от вашей операционной системы. Для Windows, кодировка cp1251, а для Linux utf — 8. Соответственно, что бы наша программа вела себя одинаково на разных платформах, лучшим решением будет указание явной кодировки.
file = open("text.txt", "r", encoding = "utf-8" )
Запись данных в файл с помощью Python
Если вам нужно записать данные в файл, следует сделать три главных шага:
- Открыть файл
- Записать в него данные
- Закрыть файл
В общем-то, это точно такая же последовательность шагов, которую вы используете при написании кода, редактировании фотографий или выполнении практически любых операций на компьютере. Сначала вы открываете документ, который хотите отредактировать, затем вносите некоторые изменения, а затем закрываете документ.
В Python данный процесс будет выглядеть следующим образом:
f = open('example.txt', 'w') f.write('hello world') f.close()
В этом примере первая строка открывает файл в режиме записи. Файл представлен как переменная , что является произвольным выбором. Мы используем , потому что это общепринятая практика в написании кода на Python. Однако любое другое допустимое имя переменной работает так же.
Есть разные режимы, в которых вы можете открыть файл:
- — для записи данных
- — для чтения и записи
- — только для добавления данных
Вторая строка в нашем коде записывает данные в файл. Данные, записанные в этом примере, представляют собой обычный текст, но вы можете записывать что угодно.
Последней строкой мы закрываем файл.
Запись данных с использованием конструкции with
Существует более короткий способ записи данных в файл, и этот метод может быть полезен для быстрого взаимодействия с файлами. Он не оставляет файл открытым, поэтому вам не нужно вызывать функцию после того, как вы выполнили все действия с файлом. Этот способ записи данных предполагает использование конструкции :
with open('example.txt', 'a') as f: f.write('hello pythonist')
Исключения в Python
При выполнении программ могут возникать ошибки, для управления ими Python использует специальные объекты, называемые исключениями. Когда в программу включен код обработки исключения, ваша программа продолжится, а если нет, то программа остановится и выведет трассировку с отчетом об исключении. Исключения обрабатываются в блоках try-except. С блоками try-except программы будут работать даже в том случае, если что-то пошло не так.
3.1. Блоки try-except на Python
Приведем пример простой ошибки деления на ноль:
print(7/0)
Traceback (most recent call last):
File «example.py», line 1, in <module>
print(7/0)
ZeroDivisionError: division by zero
Если в вашей программе возможно появление ошибки, то вы можете заранее написать блок try-except для обработки данного исключения. Приведем пример обработки ошибки ZeroDivisionError с помощью блока try-except:
try:
print(7/0)except ZeroDivisionError:
print(«Деление на ноль запрещено»)
Команда print(7/0) помещена в блок try. Если код в блоке try выполняется успешно, то Python пропускает блок except. Если же код в блоке try создал ошибку, то Python ищет блок except и запускает код в этом блоке. В нашем случае в блоке except выводится сообщение «Деление на ноль запрещено». При выполнение этого кода пользователь увидит понятное сообщение:
Деление на ноль запрещено
Если за кодом try-except следует другой код, то Python продолжит выполнение программы.
3.2. Блок try-except-else на Python
Напишем простой калькулятор, который запрашивает данные у пользователя, а затем результат деления выводит на экран. Сразу заключим возможную ошибку деления на ноль ZeroDivisionError и добавим блок else при успешном выполнение блока try.
:
first_number = («Введите первое число: «)
first_number == ‘q’:
second_number = («Введите второе число: «)
second_number == ‘q’:
try:
a = (first_number) / (second_number)
except ZeroDivisionError:
print(«Деление на ноль запрещено»)
else:
print(«Частное двух чисел равно {a}»)
Программа запрашивает у пользователя первое число (first_number), затем второе (second_number). Если пользователь не ввел » q » для завершения работы программа продолжается. В блок try помещаем код, в котором возможно появление ошибки. В случае отсутствия ошибки деления, выполняется код else и Python выводит результат на экран. В случае ошибки ZeroDivisionError выполняется блок except и выводится сообщение о запрете деления на ноль, а программа продолжит свое выполнение. Запустив код получим такие результаты:
Введите первое число: 30
Введите второе число: 5Частное двух чисел равно 6.0
Введите первое число: 7
Введите второе число: Деление на ноль запрещено
Введите первое число: q
В результате действие программы при появлении ошибки не прервалось.
3.3. Блок try-except с текстовыми файлами на Python
Одна из стандартных проблем при работе с файлами, это отсутствие необходимого файла, или файл находится в другом месте и Python не может его найти. Попробуем прочитать не существующий файл:
filename = ‘alice_2.txt’
with open(filename, encoding=’utf-8′) as file:
contents = file.read()
Так как такого файла не существует, Python выдает исключение:
Traceback (most recent call last):
File «example.py», line 3, in <module>
with open(filename, encoding=’utf-8′) as file:
FileNotFoundError: No such file or directory: ‘alice_2.txt’
FileNotFoundError — это ошибка отсутствия запрашиваемого файла. С помощью блока try-except обработаем ее:
filename = ‘alice_2.txt’
try:
with open(filename, encoding=’utf-8′) as file:
contents = file.read()except FileNotFoundError:
print(«Запрашиваемый файл {filename } не найден»)
В результате при отсутствии файла мы получим:
Запрашиваемый файл alice_2.txt не найден
3.4. Ошибки без уведомления пользователя
В предыдущих примерах мы сообщали пользователю об ошибках. В Python есть возможность обработать ошибку и не сообщать пользователю о ней и продолжить выполнение программы дальше. Для этого блок try пишется, как и обычно, а в блоке except вы прописываете Python не предпринимать никаких действий с помощью команды pass. Приведем пример ошибки без уведомления:
ilename = ‘alice_2.txt’
try:
with open(filename, encoding=’utf-8′) as file:
contents = file.read()except FileNotFoundError:
pass
В результате при запуске этой программы и отсутствия запрашиваемого файла ничего не произойдет.
Please enable JavaScript to view the comments powered by Disqus.
Чтение из файла Python
Чтобы осуществить чтение из файла Python, нужно открыть его в режиме чтения. Для этого можно использовать метод read(size), чтобы прочитать из файла данные в количестве, указанном в параметре size. Если параметр size не указан, метод читает и возвращает данные до конца файла.
>>> f = open("test.txt",'r',encoding = 'utf-8') >>> f.read(4) # чтение первых 4 символов 'This' >>> f.read(4) # чтение следующих 4 символов ' is ' >>> f.read() # чтение остальных данных до конца файла 'my first filenThis filencontains three linesn' >>> f.read() # дальнейшие попытки чтения возвращают пустую строку ''
Метод read() возвращает новые строки как ‘n’. Когда будет достигнут конец файла, при дальнейших попытках чтения мы получим пустые строки.
Чтобы изменить позицию курсора в текущем файле, используется метод seek(). Метод tell() возвращает текущую позицию курсора (в виде количества байтов).
>>> f.tell() # получаем текущую позицию курсора в файле 56 >>> f.seek(0) # возвращаем курсор в начальную позицию 0 >>> print(f.read()) # читаем весь файл This is my first file This file contains three lines
Мы можем прочитать файл построчно в цикле for.
>>> for line in f: ... print(line, end = '') ... This is my first file This file contains three lines
Извлекаемые из файла строки включают в себя символ новой строки ‘n’. Чтобы избежать вывода, используем пустой параметр end метода print(),.
Также можно использовать метод readline(), чтобы извлекать отдельные строки. Он читает файл до символа новой строки.
>>> f.readline() 'This is my first filen' >>> f.readline() 'This filen' >>> f.readline() 'contains three linesn' >>> f.readline() ''
Метод readlines() возвращает список оставшихся строк. Все эти методы чтения возвращают пустую строку, когда достигается конец файла.
>>> f.readlines()
Извлечение изображений из PDF с помощью PyMuPDF
Переходим к изображениям. PyMuPDF упрощает извлечение изображений из документов PDF с использованием метода . Скрипт, приведённый ниже, основан на примере из вики-страницы PyMuPDF и извлекает и постранично сохраняет все изображения из PDF в формате PNG. Если изображение имеет цветовое пространство CMYK, оно будет сначала преобразовано в RGB.
import fitz pdf_document = "source/Computer-Vision-Resources.pdf" doc = fitz.open(pdf_document) print("Исходный документ", doc) print("\nКоличество страниц: %i\n\n------------------\n\n" % doc.pageCount) print(doc.metadata) page_count = 0 for i in range(len(doc)): for img in doc.getPageImageList(i): xref = img pix = fitz.Pixmap(doc, xref) pix1 = fitz.Pixmap(fitz.csRGB, pix) page_count += 1 pix1.writePNG("images/picture_number_%s_from_page_%s.png" % (page_count, i+1)) print("Image number ", page_count, " writed...") pix1 = None
Извлечение изображений
Этот скрипт Python извлёк 773 изображения на 400-страничном PDF, размером полгигабайта менее чем за 3 минуты, что удивительно. Отдельные изображения хранятся в формате PNG. Чтобы сохранить исходный формат и размер изображения вместо преобразования в PNG, взгляните на расширенные версии сценариев в .
Выявление ошибок
Иногда, в ходе работы, ошибки случаются. Файл может быть закрыт, потому что какой-то другой процесс пользуется им в данный момент или из-за наличия той или иной ошибки разрешения. Когда это происходит, может появиться IOError. В данном разделе мы попробуем выявить эти ошибки обычным способом, и с применением оператора with. Подсказка: данная идея применима к обоим способам.
Python
try:
file_handler = open(«test.txt»)
for line in file_handler:
print(line)
except IOError:
print(«An IOError has occurred!»)
finally:
file_handler.close()
1 2 3 4 5 6 7 8 |
try file_handler=open(«test.txt») forline infile_handler print(line) exceptIOError print(«An IOError has occurred!») finally file_handler.close() |
В описанном выше примере, мы помещаем обычный код в конструкции try/except. Если ошибка возникнет, следует открыть сообщение на экране
Обратите внимание на то, что следует удостовериться в том, что файл закрыт при помощи оператора finally. Теперь мы готовы взглянуть на то, как мы можем сделать то же самое, пользуясь следующим методом:
Python
try:
with open(«test.txt») as file_handler:
for line in file_handler:
print(line)
except IOError:
print(«An IOError has occurred!»)
1 2 3 4 5 6 |
try withopen(«test.txt»)asfile_handler forline infile_handler print(line) exceptIOError print(«An IOError has occurred!») |
Как вы можете догадаться, мы только что переместили блок with туда же, где и в предыдущем примере. Разница в том, что оператор finally не требуется, так как контекстный диспетчер выполняет его функцию для нас.
Способ 1. Загрузка CSV с многострочными полями
Для начала хотелось бы рассказать о том, в чем преимущество ImportExportDataSql перед стандартными способами загрузки CSV в SQL Server (утилита bcp или операция BULK INSERT).
-
загрузка больших CSV файлов блоками (1 блок = 1 транзакция = N строк, где N указывает сам пользователь)
-
загружать CSV/Excel файлы с возможностью настройки полей, а также с ограничением количества обрабатываемых строк (удобно при отладке)
-
поля в заголовке не привязаны к порядковому номеру, например: файлы с заголовками «Фамилия;Имя;Отчество» и «Имя;Отчество;Фамилия» будут обработаны одинаково, независимо от порядка полей. В «bcp» это можно реализовать только с использованием файлов форматирования, а в BULK INSERT нельзя менять последовательность полей
-
загружать несколько CSV файлов в БД из одной папки, используя маску файлов
-
автоматическое создание таблицы, если её не существует, в том числе во временные глобальные таблицы (рассмотрим в примере ниже). Таблица создается в режиме «Простой импорт», в остальных режимах таблица не создается.
-
поддерживается обработка varbinary полей
-
возможность добавлять свои поля, которых нет в CSV файле с помощью встроенных функций
-
фильтр полей в режиме «Поиск по заголовку»
Список встроенных функций обработки CSV в ImportExportDataSql
-
NEWID — генерация GUID значения
-
ROWNUM — порядковый номер записи
-
EXCELROWNUM — номер строки в CSV/Excel файле
-
FILENAME — имя обрабатываемого файла
В качестве примера, будем использовать текстовый файл с именем multiline.csv, со следующим содержимым:
Шаг 4 — Запись файла
На этом этапе мы запишем новый файл, который включает в себя название «Days of the Week», и дни недели. Сначала создадим переменную title.
files.py
title = 'Days of the Weekn'
Также нужно сохранить дни недели в строковой переменной days. Открываем файл в режиме чтения, считываем файл и сохраняем вывод в новую переменную days.
files.py
path = '/users/sammy/days.txt' days_file = open(path,'r') days = days_file.read()
Теперь, когда у нас есть переменные для названия и дней недели, запишем их в новый файл. Сначала нужно указать расположение файла. Мы будем использовать каталог /users/sammy/. Также нужно указать новый файл, который мы хотим создать. Фактический путь будет /users/sammy/new_days.txt. Мы записываем его в переменную new_path. Затем открываем новый файл в режиме записи, используя функцию open() с режимом w.
files.py
new_path = '/users/sammy/new_days.txt' new_days = open(new_path,'w')
Если файл new_days.txt уже существовал до открытия, его содержимое будет удалено, поэтому будьте осторожны при использовании режима «w».
Когда новый файл будет открыт, поместим в него данные, используя <file>.write(). Операция write принимает один параметр, который должен быть строкой, и записывает эту строку в файл.
Если хотите записать новую строку в файл, нужно указать символ новой строки. Мы записываем в файл заголовок, за которым следуют дни недели.
iles.py
new_days.write(title) print(title) new_days.write(days) print(days)
Всякий раз, когда мы заканчиваем работу с файлом, нужно его закрыть. Мы покажем это в заключительном шаге.
Закрытие файла в Python
После того, как мы открыли файл, и выполнили все нужные операции, нам необходимо его закрыть. Для закрытия файла используется функция close().
file = open("text.txt", "r", encoding = "utf-8" ) file.close()
Вышеописанный код, это всего лишь пример работы с файлами, мы не должны забывать, что в ходе работы нашей программы, может произойти что то непредвиденное. Для таких случаев мы используем блок try…finally, о котором мы говорим чуть позже. Ниже пример, с блоком исключений:
try: file = open("text.txt", "r", encoding = "utf-8" ) finally: file.close()
Данная конструкция, гарантирует нам правильное закрытие файла, даже если произойдет ошибка в ходе работы нашей программы.
Лучшим же методом правильного закрытия файла, является конструкция with. Данная конструкция гарантирует нам правильное закрытие файла.
with open("text.txt", "r", encoding = "utf-8" ) as file:
Ответы на вопросы читателей
Сколько времени потребуется на изучение Питона? При постоянной практике и достаточном ежедневном внимании к языку Python основам синтаксиса и базовым операциям можно научиться за 1-2 месяца. Уверенное владение базовыми библиотеками, популярными сторонними модулями, объектно-ориентированном подходе может потребовать от 3 до 6 месяцев. Нужно осознавать и то, что для каждого обучаемого сроки индивидуальны.
Как работать с текстовыми файлами в Питоне? Взаимодействие с текстовыми файлами связано с функциями open(), close(), read(), readlines(), контекстным менеджером with и рядом других. Эти инструменты позволяют как читать документы, так и осуществлять в них запись.
Как работать с таблицами в языке Python? Универсальный формат табличной информации – csv (Comma Separated Values, разделенные запятой данные). Его хорошо понимают разные сайты, среды разработки, операционные системы. Чтобы взаимодействовать с excel-файлами требуется установить модуль openpyxl. Для работы с Гугл-таблицами нужно получить доступ к программному интерфейсу в качестве разработчика.
Что такое json-формат данных? Информация на Интернет-ресурсах зачастую представлена в виде json-данных. Она очень напоминает словари (dictionaries) в Питоне. Именно поэтому работать с этим форматом очень удобно. Он используется для передачи и получения информации между API сайтов и программ.
Какой модуль используется для взаимодействия с файлами операционной системы? Встроенная библиотека os позволяет работать с каталогами и файлами операционной системы. Возможности не ограничены конкретной «операционкой» и в большинстве случаев универсальны. Набор инструментария следующий: представление списка документов конкретной папки, создание папок, удаление каталогов и документов, переименование файлов и др.
Как представить текстовый файл в виде строки? После создания файлового объекта его можно прочитать полностью и вывести на печать. Пример кода: — with open(‘myfile.txt’, ‘r’, encoding=’utf-8′) as doc: print(doc.read()) — Файл «myfile.txt» открыт в режиме чтения и будет выведен в консоль со всем своим содержимым.
Как создать pdf-файл в Питоне? В зависимости от исходных данных pdf-документы могут создаваться при помощи разных инструментов: Pillow (когда входная информация в основной своей массе графическая), PyPDF2 (объединение файлов, кодирование-декодирование), fpdf (преобразование текста в pdf-формат) и пр.
Как обрабатывать изображения при помощи языка Python? Один из самых часто применяемых инструментов – библиотека Pillow. Позволяет решать задачи: извлекать сведения о картинке; менять размеры, обрезать, поворачивать; накладывать фильтры на рисунки (размытие, повышение контраста и др.); добавлять текстовые надписи; создавать изображения.
The file Object Attributes
Once a file is opened and you have one file object, you can get various information related to that file.
Here is a list of all attributes related to file object −
Sr.No. | Attribute & Description |
---|---|
1 |
file.closed Returns true if file is closed, false otherwise. |
2 |
file.mode Returns access mode with which file was opened. |
3 |
file.name Returns name of the file. |
4 |
file.softspace Returns false if space explicitly required with print, true otherwise. |
Example
#!/usr/bin/python # Open a file fo = open("foo.txt", "wb") print "Name of the file: ", fo.name print "Closed or not : ", fo.closed print "Opening mode : ", fo.mode print "Softspace flag : ", fo.softspace
This produces the following result −
Name of the file: foo.txt Closed or not : False Opening mode : wb Softspace flag : 0
Считываем бинарный файл со строковыми данными в массив
Следующий скрипт поможет нам прочитать бинарник number_list.bin, созданный нами ранее.
# Открываем на чтение бинарный файл file = open("number_list.bin", "rb") # Считываем в список первые 5 элементов number = list(file.read(5)) # Выводим список print(number) # Закрываем файл file.close()
Бинарный файл содержит список с числовыми данными. Как и в предыдущем примере, функция открывает файл и читает из него данные. Затем из бинарника читаются первые 5 чисел и перед выводом объединяются в список.
Результат
После выполнения скрипта мы получим следующий результат. Бинарный файл содержит 7 чисел, первые 5 вывелись на консоль.
Закрытие открытого файла с помощью метода close()
Когда вы открываете файл в Python, чрезвычайно важно закрыть файл после внесения изменений. Это сохраняет любые изменения, которые вы сделали ранее, удаляет файл из памяти и предотвращает дальнейшее чтение или запись в программе
Синтаксис для закрытия открытого файла в Python:
fileobject.close()
Если мы продолжим наши предыдущие примеры, где мы читаем файлы, вот как вы закроете файл:
text_file = open('/Users/pankaj/abc.txt','r') # some file operations here text_file.close()
Кроме того, вы можете избежать закрытия файлов вручную, если используете блок with. Как только блок with выполняется, файлы закрываются и становятся недоступными для чтения и записи.
Чтение файла в Python
В файлах может содержаться любой объем данных, начиная от небольшого рассказа и до сохранения истории погоды за столетия. Чтение файлов особенно актуально для приложений, предназначенных для анализа данных. Приведем пример простой программы, которая открывает файл и выводит его содержимое на экран. В примере я буду использовать файл с числом «Пи» с точностью до 10 знаков после запятой. Скачать этот файл можно прямо здесь ( pi_10.txt ) или самим создать текстовый файл и сохранить под любым именем. Пример программы, которая открывает файл и выводит содержимое на экран:
with open(‘pi_10.txt’) as file_pi:
digits = file_pi.read()print(digits)
Код начинается с ключевого слова with. При использование ключевого слова with используемый файл открывается с помощью функции open(), а закрывается автоматически после завершения блока with и вам не придется в конце вызывать функцию close(). Файлы можно открывать и закрывать явными вызовами open() и close(). Функция open() получает один аргумент — имя открываемого файла, в нашем случае ‘pi_10.txt’. Python ищет указанный файл в каталоге, где хранится файл текущей программы. Функция open() возвращает объект, представляющий файл ‘pi_10.txt’. Python сохраняет этот объект в переменной file_pi .
После появления объекта, представляющего файл ‘pi_10.txt’, используется метод read(), который читает все содержимое файла и сохраняет его в одной строке в переменной contents. В конце с помощью функции содержимое выводится на экран. Запустив этот файл, мы получим данные, находящиеся в нашем файле ‘pi_10.txt’.
3.1415926535
В случае, если файл расположен не в одном каталоге с файлом программы, необходимо указать путь, чтобы Python искал файлы в конкретном месте. Существует два пути как прописать расположение файла:
Относительный путь.
Относительный путь приказывает Python искать файлы в каталоге, который задается относительно каталога, в котором находится текущий файл программы
with open(‘files/имя_файла.txt’) as file:
Абсолютный путь.
Местонахождение файла не зависит от того, где находится ваша программа. Абсолютные пути обычно длиннее относительных, поэтому их лучше сохранить в переменную и затем передать функции open().
file_path = ‘/Users/Desktop/files/имя_файла.txt’with open(file_path) as file:
С абсолютными путями можно читать файлы из любого каталога вашей системы.
Пишем в файлах в Python
Как вы могли догадаться, следуя логике написанного выше, режимы написания файлов в Python это “w” и “wb” для write-mode и write-binary-mode соответственно
Теперь давайте взглянем на простой пример того, как они применяются.ВНИМАНИЕ: использование режимов “w” или “wb” в уже существующем файле изменит его без предупреждения. Вы можете посмотреть, существует ли файл, открыв его при помощи модуля ОС Python
Python
handle = open(«output.txt», «w»)
handle.write(«This is a test!»)
handle.close()
1 2 3 |
handle=open(«output.txt»,»w») handle.write(«This is a test!») handle.close() |
Вот так вот просто. Все, что мы здесь сделали – это изменили режим файла на “w” и указали метод написания в файловом дескрипторе, чтобы написать какой-либо текст в теле файла. Файловый дескриптор также имеет метод writelines (написание строк), который будет принимать список строк, который дескриптор, в свою очередь, будет записывать по порядку на диск.
Заключение
Итак, если вы хотите прочитать текстовый файл в Python, вам сначала нужно его открыть.
open("name of file you want opened", "optional mode")
Если текстовый файл и ваш текущий файл, где вы пишете код, находятся в одной директории, можно просто указать имя файла в функции .
Если ваш текстовый файл находится в другом каталоге, вам необходимо указать правильный путь к нему.
Функция принимает необязательный параметр режима. Режим по умолчанию – чтение ().
Чтобы проверить, можно ли прочитать текстовый файл, вы можете использовать метод . Он возвращает , если файл можно прочитать, или в противном случае.
Метод будет читать все содержимое файла как одну строку.
Также, когда вы закончите читать файл, не забудьте закрыть его. Один из способов убедиться, что ваш файл закрыт, – использовать ключевое слово . Оно закрывает файл автоматически и вам не нужно беспокоиться об этом.
Метод будет считывать только одну строку из файла и возвращать ее.
Метод прочитает и вернет все строки в файле в виде списка.
Также для чтения содержимого файлов можно использовать цикл .
Надеемся, вам понравилась эта статья. Желаем удачи в вашем путешествии по миру Python!
Перевод статьи «Python Open File – How to Read a Text File Line by Line».