Файли в python, введення-виведення
Ця стаття присвячена роботі з файлами (введенням/виводом) у Python: відкриття, читання, запис, закриття та інші операції.
Файли Python
Файл - це лише набір даних, збережений у вигляді послідовності бітів на комп'ютері. Інформація зберігається у купі даних (структура даних) і має назву "ім'я файлу" (filename).
У Python існує два типи файлів:
Текстові файли
Це файли з вмістом людини. Вони зберігаються послідовності символів, які розуміє людина. Блокнот та інші стандартні редактори вміють читати та редагувати цей тип файлів.
Текст може зберігатися у двох форматах: (.txt) – простий текст і (.rtf) – «формат збагаченого тексту».
Бінарні файли
У бінарних файлах дані відображаються в закодованій формі (з використанням лише нулів (0) та одиниць (1) замість простих символів). Найчастіше це просто послідовності бітів.
Вони зберігаються у форматі .bin.
Будь-яку операцію з файлом можна розбити на три великі етапи:
- Відкриття файлу
- Виконання операції (запис, читання)
- Закриття файлу
Відкриття файлу
Метод open()
Python має вбудовану функцію open() . За допомогою неї можна відкрити будь-який файл на комп'ютері. Технічно Python створює на його основі об'єкт.
f =
open(file_name, access_mode)
- file_name = ім'я файлу, що відкривається
- access_mode = режим відкриття файлу. Він може бути: для читання, запису тощо. буд. За промовчанням використовується режим читання ( r ), якщо інше не вказано. Далі повний перелік режимів відкриття файлу
| Режим | Опис |
|---|
| r | Лише для читання. |
| w | Лише для запису. Створить новий файл, якщо не знайде із вказаним ім'ям. |
| rb | Лише для читання (бінарний). |
| wb | Тільки для запису (бінарний).Створить новий файл, якщо не знайде із вказаним ім'ям. |
| r+ | Для читання та запису. |
| rb+ | Для читання та запису (бінарний). |
| w+ | Для читання та запису. Створить новий файл для запису, якщо не знайде із вказаним ім'ям. |
| wb+ | Для читання та запису (бінарний). Створить новий файл для запису, якщо не знайде із вказаним ім'ям. |
| a | Відкриє, щоб додати новий вміст. Створить новий файл для запису, якщо не знайде із вказаним ім'ям. |
| a+ | Відкриє, щоб додати новий вміст. Створить новий файл для читання запису, якщо не знайде із вказаним ім'ям. |
| ab | Відкриє додавання нового вмісту (бінарний). Створить новий файл для запису, якщо не знайде із вказаним ім'ям. |
| ab+ | Відкриє додавання нового вмісту (бінарний). Створить новий файл для читання запису, якщо не знайде із вказаним ім'ям. |
приклад
Створимо текстовий файл example.txt та збережемо його у робочій директорії.
Наступний код використовується для його відкриття.
f =
open('example.txt','r')
відкрити файл з робочої директорії в режимі читання fp =
open('C:/xyz.txt','r')
відкрити файл з будь-якого каталогу
У цьому прикладі f - змінна-покажчик на файл example.txt.
Наступний код використовується для виведення вмісту файлу та інформації про нього.
>>>
print(*f)
# виводимо вміст файлу This is a text file.
>>>
print(f)
# виводимо об'єкт
_io.TextIOWrapper name='example.txt' mode='r' encoding='cp1252'>
Варто звернути увагу, що в Windows стандартним кодуванням є CP1252, а в Linux - utf-08.
Закриття файлу
Метод close()
Після відкриття файлу Python його потрібно закрити. Таким чином звільняються ресурси і забирається сміття. Python автоматично закриває файл, коли об'єкт надається іншому файлу.
Існують такі способи:
Спосіб №1
Найпростіше після відкриття файлу закрити його, використовуючи метод close().
f =
open('example.txt','r')
робота з файлом f.close()
Після закриття цей файл не можна буде використовувати доти, доки його знову не відкрити.
Спосіб №2
Також можна написати try/finally , яке гарантує, що якщо після відкриття файлу операції з ним призводять до виключення, він закриється автоматично.
Без нього програма завершується некоректно.
Ось як зробити цей виняток:
f =
open('example.txt','r')
try:
робота з файлом
finally: f.close()
Файл потрібно відкрити до інструкції try , тому що якщо інструкція open сама по собі викликає помилку, файл не відкриватиметься для подальшого закриття.
Цей метод гарантує, що й операції над файлом викличуть винятки, він закриється перш ніж програма зупиниться.
Спосіб №3
Інструкція with
Ще один підхід - використовувати інструкцію with, яка спрощує обробку винятків за допомогою інкапсуляції початкових операцій, а також задач із закриття та очищення.
У такому разі інструкція close не потрібна, тому що with автоматично закриє файл.
Ось як це реалізувати у коді.
with
open('example.txt')
as f:
робота з файлом
Читання та запис файлів у Python
У Python файли можна читати або записувати інформацію в них за допомогою відповідних режимів.
Функція read()
Функція read() використовується для читання вмісту файлу після відкриття його як читання ( r ).
Синтаксис
- file = об'єкт файлу
- size = кількість символів, які потрібно прочитати. Якщо не вказати, файл прочитається повністю.
приклад
>>> f =
open('example.txt','r')
>>> f.read(7)
# Читання 7 символів з example.txt
'This is '
Інтерпретатор прочитав 7 символів файлу і якщо знову використовувати функцію read(), читання почнеться з 8-го символу.
>>> f.read(7)
читання наступних 7 символів
'a text'
Функція readline()
Функція readline() використовується для рядкового читання вмісту файлу. Вона використовується для великих файлів. З її допомогою можна отримувати доступ до будь-якого рядка у будь-який момент.
приклад
Створимо файл test.txt з кількома рядками:
This is line1. This is line2. This is line3.
Подивимося, як функція readline() працює у test.txt .
>>> x =
open('test.txt','r')
>>> x.readline()
# прочитати перший рядок This is line1.
>>> x.readline(2)
# прочитати другий рядок This is line2.
>>> x.readlines()
# прочитати всі рядки
['This is line1.','This is line2.','This is line3.']
Зверніть увагу, як у останньому випадку рядки відокремлені один від одного.
Функція write()
Функція write() використовується для запису файлів Python, відкритих в режимі запису.
Якщо ви намагаєтеся відкрити файл, якого не існує, в цьому режимі, тоді буде створено новий.
Синтаксис
приклад
Припустимо, що файлу xyz.txt не існує. Він буде створений при спробі відкрити його як читання.
>>> f =
open('xyz.txt','w')
# Відкриття в режимі запису
>>> f.write('Hello \n World')
# запис Hello World у файл Hello World >>> f.close()
# закриття файлу
Перейменування файлів у Python
Функція rename()
Функція rename() використовується для перейменування файлів у Python. Для її використання спочатку потрібно імпортувати модуль os.
import os os.rename(src,dest)
- src = файл, який потрібно перейменувати
- dest = нове ім'я файлу
приклад
>>>
import os >>>
# Перейменування xyz.txt на abc.txt
>>> os.rename("xyz.txt","abc.txt")
Поточна позиція у файлах Python
У Python можна дізнатися про поточну позицію у файлі за допомогою функції tell() . Так само можна змінити поточну позицію командою seek() .
приклад
>>> f =
open('example.txt')
# example.txt, який ми створили раніше
>>> f.read(4)
# давайте спочатку перейдемо до 4-ї позиції This >>> f.tell()
# повертає поточну позицію
4
>>> f.seek(0,0)
# повернемо становище на 0 знову
Методи файлу в Python
| file.close() |
закриває відкритий файл |
| file.fileno() |
повертає цілий дескриптор файлу |
| file.flush() |
очищує внутрішній буфер |
| file.isatty() |
повертає True, якщо файл прив'язаний до терміналу |
| file.next() |
повертає наступний рядок файлу |
| file.read(n) |
читання перших n символів файлу |
| file.readline() |
читає один рядок рядка або файлу |
| file.readlines() |
читає та повертає список усіх рядків у файлі |
| file.seek(offset[,whene]) | встановлює поточну позицію у файлі |
| file.seekable() |
перевіряє, чи файл підтримує випадковий доступ. Повертає True, якщо так |
| file.tell() |
повертає поточну позицію у файлі |
| file.truncate(n) |
зменшує розмір файлу. Якщо n вказала, файл обрізається до n байт, якщо ні — до поточної позиції |
| file.write(str) |
додає рядок str до файлу |
| file.writelines(sequence) |
додає послідовність рядків у файл |
🔍Як додати рядок у файл пітон? Корисні поради та приклади
Цей код відкриває файл у режимі додавання ("a"), а потім за допомогою методу `write()` додає вказаний рядок у файл.
Детальна відповідь
Як додати рядок у файл пітон
Якщо вам потрібно додати рядок у файл мовою програмування Python, вам потрібно буде використовувати певні операції з файлами. У наступному поясненні ми розберемо, як це зробити.
1. Відкрити файл у режимі запису
Спочатку необхідно відкрити файл у режимі запису, щоб мати можливість модифікувати його вміст. Для цього можна використовувати функцію open() і передати як аргумент ім'я файлу та режим запису ('w'). Наприклад:
file = open("file.txt", "w")
2. Додати рядок у файл
Тепер, коли файл відкритий у режимі запису, можна додавати рядки до файлу.Для цього використовуйте метод write() об'єкта файлу. Приклад:
file.write("Це новий рядок")
3. Закрити файл
Після того, як ви додасте потрібний рядок у файл, важливо закрити файл. Це не тільки зберігає зміни, а й звільняє ресурси, пов'язані з відкриттям файлу. Щоб закрити файл, використовуйте метод close(). Приклад:
Повний приклад коду
file = open("file.txt", "w") file.write("Це новий рядок") file.close()
Після виконання цього коду, рядок "Це новий рядок" буде додано до файлу "file.txt". Якщо файл не існує, його буде створено автоматично.
Важливі міркування
При використанні операцій запису у файл важливо пам'ятати про безпеку та права доступу до файлів. Переконайтеся, що ви маєте відповідні права на запис у вказаний файл і що ви не перезаписуєте існуючі дані без необхідності. Тепер, використовуючи наведений вище код, ви зможете без проблем додати рядки у файл мовою програмування Python.