Работа с файлами (ввод/вывод) в Python: открытие, чтение, запись, закрытие и другие операции

Существует два типа файлов:

  1. Текстовые
  2. Бинарные
Текстовые файлы

Это файлы хранящие последовательность символов, которые понимает человек и редактируют простые текстовые редакторы.

Бинарные файлы

Бинарные файлы - в большинстве случаев нечитаемы в простых тектовых редакторах и это последовательность битов.

Операции с файлом:

  1. Открытие файла
  2. Выполнение записи или чтения
  3. Закрытие файла
Открытие файла

Используется встроенная функция open()

функция open() возвращает file object и чаще всего используется с двумя аргументами: open(filename, mode)

file = open('workfile', 'w')

Первый аргумент - это строка, содержащая имя файла.

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

  • "r", когда файл будет только считываться
  • "w" только для записи (существующий файл с тем же именем будет удален)
  • "x" эксклюзивное создание, исключение FileExistsError, если файл уже существует
  • "a" открывает файл для добавления; любые данные, записанные в файл, автоматически добавляются в конец.
  • "r+" открывает файл как для чтения, так и для записи. Аргумент mode является необязательным; 'r' будет приниматься, если он опущен
  • "t" символ текстового режима
  • "b" символ двоичного режима: теперь данные считываются и записываются в виде байтовых объектов. Этот режим следует использовать для всех файлов, которые не содержат текста.

Обычно файлы открываются в текстовом режиме, что означает, что вы читаете и записываете строки из файла и в файл, которые закодированы в определенной кодировке. Если кодировка не указана, значение по умолчанию зависит от платформы

В текстовом режиме при чтении по умолчанию используется преобразование окончаний строк, зависящих от платформы (\n в Unix, \r\n в Windows) просто в \n

При записи в текстовом режиме по умолчанию используется преобразование вхождений \n обратно в окончания строк, зависящие от платформы.

file = open("workfile.txt", "r")
for line in file:
    print(line)
file.close()
 

Рекомендуется использовать ключевое слово with при работе с файловыми объектами (Оператор with создает диспетчер контекста). Преимущество заключается в том, что файл правильно закрывается после завершения его набора, даже если в какой-то момент возникает исключение.

with open( 'workfile.txt') as file:
    for line in file:
        print(line)

Если вы не используете ключевое слово with, то вам следует вызвать file.close(), чтобы закрыть файл и немедленно освободить все системные ресурсы, используемые им.

Некоторые методы файловых объектов

Для: file - объект файла

file.close() -  закрывает файл

file.read([size]) считывает из файла не более size байтов

file.readline() читает одну строку из файла. Символ новой строки \n сохраняется в считанной строке

file.readlines() читает файл построчно, пока не достигнет конца файла -  EOF, и возвращает список, содержащий строки файла

file.write() записывает строку str в файл file. Метод возвращает целое число - количество записанных байт

file.writelines() записывает последовательность строк в файл file.