Работа с файлами (ввод/вывод) в Python: открытие, чтение, запись, закрытие и другие операции
Существует два типа файлов:
- Текстовые
- Бинарные
Текстовые файлы
Это файлы хранящие последовательность символов, которые понимает человек и редактируют простые текстовые редакторы.
Бинарные файлы
Бинарные файлы - в большинстве случаев нечитаемы в простых тектовых редакторах и это последовательность битов.
Операции с файлом:
- Открытие файла
- Выполнение записи или чтения
- Закрытие файла
Открытие файла
Используется встроенная функция 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 обратно в окончания строк, зависящие от платформы.
for line in file:
print(line)
Рекомендуется использовать ключевое слово 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.