Рубрики
Без рубрики

30 дней Python 👨‍💻 – День 18 – файл ввода/вывода

Сегодня я исследовал, как обрабатывать файлы и общаться с файлами с помощью Python. Все эти дни у меня есть … Tagged с Python, Challenge.

Сегодня я исследовал, как обрабатывать файлы и общаться с файлами с помощью 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 модуль с большими объяснениями.

Будет использовать pathlib Модуль явно в ближайшие дни во время строительства проектов.

Это все на сегодня. Завтра я планирую изучить работу с регулярными выражениями в Python и их вариантами использования.

Удачного!

Оригинал: “https://dev.to/arindamdawn/30-days-of-python-day-18-file-i-o-3jmb”