Файлы¶
В данной статье мы рассмотрим встроенные средства python для работы с файлами: открытие / закрытие, чтение и запись.
Прежде, чем работать с файлом, его надо открыть. С этим замечательно справится встроенная функция open
:
1 |
|
У функции open
много параметров, они указаны в статье "Встроенные функции", нам пока важны 3 аргумента: первый, это имя файла. Путь к файлу может быть относительным или абсолютным. Второй аргумент, это режим, в котором мы будем открывать файл.
Режим | Обозначение |
---|---|
r | открытие на чтение (является значением по умолчанию). |
w | открытие на запись, содержимое файла удаляется, если файла не существует, создается новый. |
x | открытие на запись, если файла не существует, иначе исключение. |
a | открытие на дозапись, информация добавляется в конец файла. |
b | открытие в двоичном режиме. |
t | открытие в текстовом режиме (является значением по умолчанию). |
+ | открытие на чтение и запись |
Режимы могут быть объединены, то есть, к примеру, rb
- чтение в двоичном режиме. По умолчанию режим равен rt
.
И последний аргумент, encoding
, нужен только в текстовом режиме чтения файла. Этот аргумент задает кодировку.
Чтение из файла¶
Открыли мы файл, а теперь мы хотим прочитать из него информацию. Для этого есть несколько способов, но большого интереса заслуживают лишь два из них.
Первый - метод read
, читающий весь файл целиком, если был вызван без аргументов, и n
символов, если был вызван с аргументом (целым числом n
).
1 2 3 4 5 |
|
Ещё один способ сделать это - прочитать файл построчно, воспользовавшись циклом for
:
1 2 3 4 5 6 7 8 |
|
Запись в файл¶
Теперь рассмотрим запись в файл. Попробуем записать в файл вот такой вот список:
1 2 3 |
|
Откроем файл на запись:
1 |
|
Запись в файл осуществляется с помощью метода write
:
1 2 3 4 5 6 7 8 |
|
Для тех, кто не понял, что это за цифры, поясню: метод write
возвращает число записанных символов.
После окончания работы с файлом его обязательно нужно закрыть с помощью метода close
:
1 |
|
Теперь попробуем воссоздать этот список из получившегося файла. Откроем файл на чтение и прочитаем строки.
1 2 3 4 5 |
|
Мы получили тот же список, что и был. В более сложных случаях (словарях, вложенных кортежей и т. д.) алгоритм записи придумать сложнее. Но это и не нужно. В python уже давно придумали средства, такие как pickle
или json
, позволяющие сохранять в файле сложные структуры.