Сегодня я исследовал, как обрабатывать файлы и общаться с файлами с помощью Python. Все эти дни я изучал и делюсь о различных концепциях Python вместе с некоторыми лучшими практиками для программы на Python. Тем не менее, мы не общались с внешним миром за пределами Python. Нашим программам часто необходимо общаться с внешним миром по различным причинам, таким как чтение данных из файлов Excel, CSV или PDF, преобразование и сжатие изображений, извлечение данных из текстовых файлов, чтение данных из базы данных и бесчисленные другие вещи. Это взаимодействие с внешним миром осуществляется с использованием операций ввода/вывода или ввода.
Файлы помогают нам постоянно хранить данные в системах. Когда мы пишем любую программу для управления некоторыми данными, данные временно хранятся в оперативной памяти машины и стерты при выключении компьютера. Чтобы постоянно хранить данные, их необходимо хранить в какой -то базе данных или в некоторых файловых системах, чтобы получить доступ к последующему использованию.
Файлы могут быть широко классифицированы на основе их содержания на два типа:
- Бинарный (также называемый богатым текстом)
- Текст
Если вы заинтересованы в том, чтобы узнать больше об этих двух типах файлов, вот отличная статья для проверки.
Python обеспечивает встроенную функцию Open
Чтобы открыть любой файл. Вначале любой файл должен быть открыт сначала для чтения данных из него или записать на него некоторые данные. Чтение данных из файла простое в Python.
Я использовал Repl в качестве игровой площадки для экспериментов со всеми блоками кода, представленными в этой статье.
Вступительные файлы
Я создал test.txt
Файл с некоторым фиктивным контентом для тестирования.
test.txt
# test.txt I am learning python.
Теперь содержимое этого файла можно прочитать с помощью Python, как это.
main.py
content = open('test.txt') output = content.read() print(output) # I am learning python.
Мы также можем указать режим при открытии файла в Open
функция По умолчанию режим – режим «r» или чтения. Мы также можем указать, нужно ли открывать файл в текстовом или двоичном режиме.
r | Открывает файл для чтения. (По умолчанию) |
w | Открывает файл для написания. Создает новый файл, если его не существует, или усекает файл, если он существует. |
x | Открывает файл для эксклюзивного творения. Если файл уже существует, операция не выполняется. |
a | Открывает файл для добавления в конце файла без усечения его. Создает новый файл, если его не существует. |
t | Открывается в текстовом режиме. (По умолчанию) |
b | Открывается в двоичном режиме. |
+ | Открывает файл для обновления (чтение и написание) |
Мы также можем указать формат кодирования при открытии файла. Формат по умолчанию UTF-8
Закрытие файлов
Важно закрыть файл после выполнения операций на нем, поскольку он освободит пространство памяти, связанное с файлом.
main.py
content = open('test.txt', mode='r') output = content.read() print(output) content.close()
Приведенный выше блок может быть помещен в Try-Except Block. Это гарантирует, что если есть какие -либо ошибки при выполнении операции, файл будет закрыт.
main.py
try: content = open('test.txt', mode='r') output = content.read() print(output) except FileNotFoundError as error: print(f'file not found {error}') finally: content.close()
Python обеспечивает лучший синтаксис, чтобы открыть операции выполнения в файле, используя с
утверждение. Он автоматически закрывает файл после выполнения операции.
main.py
with open('test.txt', mode='r') as content: output = content.read() print(output) # I am learning python.
Написание в файлы
Python предоставляет написать
Метод для записи данных в файл. Файл должен быть открыт с помощью W
режим для записи в файл. Следует отметить, что использование W
Режим переопределяет содержимое файла. Если контент должен быть добавлен, то A
Режим может быть использован. Если файл не существует, файл создается перед написанием данных в него.
main.py
with open('test.txt', mode='w', encoding='utf-8') as my_file: my_file.write('This is the first line\n') # \n is for creating a newline my_file.write('This is the second line\n') my_file.write('This is the third line')
main.py
with open('test.txt', mode='a', encoding='utf-8') as my_file: my_file.write('This text will be appended')
Другой способ написать – это использование Writelines
метод Это может быть предоставлено списком предметов.
main.py
with open('test.txt', mode='w', encoding='utf-8') as my_file: my_file.writelines(['First line', '\n', 'Second Line'])
Чтение из файлов
Python предоставляет много методов, прочитанных из файла. Файл должен быть открыт с помощью режима ‘R’. Это также режим «r+», если нам нужно выполнять операции с прочтением и записи вместе. Читать
Метод принимает параметр размера, который в основном является количеством символов, до которого он будет читать. Если размер не предоставлен, то он считывает весь файл.
main.py
with open('test.txt', mode='r', encoding='utf-8') as my_file: content = my_file.read() print(content)
Есть Скажи
Метод, который обеспечивает, где курсор в файле, который читается в настоящее время.
Ищите
Метод используется для приведения курсора в определенную позицию в файле.
main.py
with open('test.txt', mode='r', encoding='utf-8') as my_file: my_file.seek(0) # brings cursor to beginning of file print(my_file.tell()) # prints location of cursor content = my_file.read() print(content)
Если в файле есть много строк, более эффективным и эффективным способом является чтение строк, используя петлю.
main.py
with open('test.txt', mode='r', encoding='utf-8') as my_file: for line in my_file: print(line)
В качестве альтернативы Python предоставляет два других метода, readline
и Readlines.
readline
Считает файл, пока не будет достигнут новый линий (\ n).
Readlines
Возвращает список строк
Методы файла Python
Вот полный список методов файлов, доступных в Python
Закрыть() | Закрывает открытый файл. Это не влияет, если файл уже закрыт. |
DEPACH () | Отделяет базовый бинарный буфер от Textiobase и возвращает его. |
fileno () | Возвращает целое число (файловый дескриптор) файла. |
промывать() | Промывает буфер записи потока файла. |
isatty () | Возвращает True, если поток файла интерактивен. |
Читать (n) | Читает большинство символов из файла. Читает до конца файла, если он отрицательный или нет. |
удобочитаемый() | Возвращает true, если поток файла может быть прочитал из. |
readline (n = -1) | Читает и возвращает одну строку из файла. Читается в максимальных n байтах, если указано. |
READLINES (n = -1) | Читает и возвращает список строк из файла. Читает в большинстве N Bytes/символов, если указано. |
Изменяет позицию файла на смещенные байты, ссылаясь на (Start, Current, End). | |
Исканный () | Возвращает True, если потоковой файл поддерживает случайный доступ. |
рассказать() | Возвращает текущее местоположение файла. |
Изменение размера потока файла до байтов размера. Если размер не указан, сброситесь до текущего местоположения. | |
Записывается () | Возвращает True, если поток файла может быть записан. |
написать (s) | Записывает строку S в файл и возвращает количество написанных символов. |
Writelines (строки) | Записывает список строк в файл. |
Прохладное упражнение
Давайте попробуем построить программу переводчика, которая может прочитать файл с английским контентом и создать новую переведенную версию файла на другом языке.
Для этого упражнения мы будем использовать внешний пакет Python от PYPI под названием Перевести . С помощью этого пакета мы можем сделать автономные переводы!
Во -первых, этот пакет должен быть установлен. Поскольку я использую Repl, я добавлю ее в раздел пакетов в Repl. Он может быть установлен с помощью пип
в терминале, если использует локальный проект.
Создаст файл с именем QUOTE.TXT
и заполните его вдохновляющей цитатой:
QUOTE.TXT
If you can't make it good, at least make it look good. - Bill Gates
Теперь давайте создадим две переведенные версии этой цитаты. Один на испанском с именем файла QUOTE-ES.TXT
и еще один по -французски с именем файла QUOTE-FR.TXT
main.py
from translate import Translator spanish_translate = Translator(to_lang="es") french_translate = Translator(to_lang="fr") try: with open('quote.txt', mode='r') as quote_file: # read the file quote = quote_file.read() # do the translations quote_spanish = spanish_translate.translate(quote) quote_french = french_translate.translate(quote) # create the translated files try: with open('quote-es.txt', mode='w') as quote_de: quote_de.write(quote_spanish) with open('quote-fr.txt', mode='w') as quote_fr: quote_fr.write(quote_french) except IOError as error: print('An error ocurred') raise (error) except FileNotFoundError as error: print('File not found') raise (error)
Это генерирует два переведенных файла с помощью цитаты, переведенной автоматически. Это было довольно круто!
Встроенный модуль для обработки файлов
Python предоставляет встроенный модуль в рамках своих стандартных библиотек, называемых pathlib
Анкет Он предоставляет различные удобные классы, представляющие пути файловой системы с семантикой, подходящей для различных операционных систем. Этот модуль был введен в V3.4. Пользовательнее использование этого пакета при работе со многими каталогами.
Вот некоторые ресурсы, связанные с pathlib
модуль с большими объяснениями.
- https://realpython.com/python-pathlib/
- https://docs.python.org/3/library/pathlib.html
- https://www.geeksforgeeks.org/pathlib-module-in-python/
Будет использовать pathlib
Модуль явно в ближайшие дни во время строительства проектов.
Это все на сегодня. Завтра я планирую изучить работу с регулярными выражениями в Python и их вариантами использования.
Удачного!
Оригинал: “https://dev.to/arindamdawn/30-days-of-python-day-18-file-i-o-3jmb”