Запис файлів¶
При записі в файл дуже важливо визначитися з режимом відкриття файлу, щоб випадково не видалити вміст файлу:
w
- відкрити файл для запису. Якщо файл існує, то його вміст видаляєтьсяa
- відкрити файл для доповнення запису. Дані додаються в кінці файлуx
- відкрити файл для запису. Якщо файл існує, запис не виконується
Всі режими створюють файл, якщо він не існує.
Для запису в файл використовуються такі методи:
- write - записати один рядок у файл
- writelines - дозволяє передавати список рядків як аргумент
write¶
Метод write очікує рядок для запису.
Наприклад, візьмемо список рядків:
Відкриття файлу new_data.txt в режимі запису:
Перетворюємо список команд в один рядок за допомогою join:
Запис рядка у файл:
Після завершення роботи з файлом його необхідно закрити:
- Оскільки ipython підтримує команду cat, можна переглянути вміст файлу
cat new_data.txt
writelines¶
Метод writelines очікує як аргумент ітерований об'єкт з рядками. Запис списку рядків lines у файл:
In [1]: lines = ["line1\n", "line2\n", "line3\n"] # (1)
In [3]: f = open('new_data.txt', "w")
In [5]: f.writelines(lines)
In [6]: f.close()
In [7]: cat new_data.txt
line1
line2
line3
- Метод writelines не додає символ нового рядка, тому кожен рядок має бути з потрібним символом нового рядка.
режим a
¶
Якщо відкрити файл у режимі a
, файл буде відкритий для доповнення запису. Дані додаються в кінці файлу:
In [1]: lines = ["line1\n", "line2\n", "line3\n"]
In [2]: f = open('new_data.txt', "a")
In [4]: f.writelines(["line4\n", "line5\n"])
In [5]: f.close()
In [6]: cat new_data.txt
line1
line2
line3
line4
line5
режим x
¶
Якщо у режимі x
відкрити існуючий файл, виникне виняток FileExistsError:
In [1]: f = open('new_data.txt', "x")
---------------------------------------------------------------------------
FileExistsError Traceback (most recent call last)
Cell In[1], line 1
----> 1 f = open('new_data.txt', "x")
...
FileExistsError: [Errno 17] File exists: 'new_data.txt'
З новим файлом такої проблеми не буде і дані додаються як в режимі w
: