Робота з файлами в Python: функції читання, запис у файл
Давайте детально розберемо, як за допомогою Python відбувається відкриття, читання та запис даних у файл. Для кращого розуміння стаття супроводжується фрагментами коду.
Будь-яка програма, написана мовою Python, має не тільки функціональну частину. Вона також оптимізована для роботи з файлами. Наприклад, при написанні бота, що автоматично відповідає на запити користувача, доведеться додати до нього заздалегідь підготовлені відповіді в окремому текстовому документі. Розробляєте програму для редагування зображень? Тоді код повинен обробляти файли, завантажені користувачем. Щоб усе це реалізувати, ви повинні знати, як працювати з файлами мовою Python, і які для цього потрібні функції.
Пристрій, що працює на базі операційної системи, має файли. Це набір даних з власною назвою, який зберігається на цьому пристрої або комп’ютері. Декілька файлових об’єктів для зручності або класифікації зберігають у папках або директоріях. У Python, як і в інших мовах програмування, файли використовуються для збереження результатів роботи програми або отримання даних для подальшої кодової обробки.
При роботі з файлами ви будете часто використовувати команди:
Тепер настав час пояснити, як все це робити.
Щоб відкрити файл в Python застосовується функція open(). Нижче ви бачите фрагмент коду, який пояснює цю команду:
file = open('doc.txt', 'r') # 'r'
Наприкінці рядка коду можна побачити аргумент # ‘r’. Його присутність означає, що документ відкритий лише для читання. При необхідності можна змінити цей аргумент, додавши замість нього ‘w’. Це означає, що файл доступний не тільки для читання, а й для запису.
Характерною особливістю синтаксису Python є те, що після відкриття та роботи з файлом його доводиться закривати командою file.close(). Закриття можна автоматизувати за допомогою контекстного менеджера with:
with open(doc.txt', 'r') as file: content = file.read() print(content)
У цьому фрагменті ми бачимо наявність контекстного менеджера, який сам закриває файл після завершення роботи. Автоматичне закриття запобігає можливим помилкам.
Під час написання команди відкриття файлу ви можете вказати його кодування:
with open('doc.txt', 'w+', encoding='Windows-1251') as f:
Також ви можете вказати кодування при звичайному відкритті файлу без автоматичного закриття:
f = open('doc.txt', 'w+', encoding='Windows-1251')
тут ми щось робимо
f.close()
Читання даних у Python реалізується функцією read(). Перед вами фрагмент коду, який це показує:
file.read(size)
Тут файл показує об’єкт для подальшого читання, а параметр size — скільки символів потрібно прочитати. Якщо параметр не вказувати, користувач зможе прочитати всі дані з цього файлу.
Давайте зараз створимо файл highload.txt і запишемо в нього рядок Welcome to My Page! Тепер прочитаємо перші сім символів з цього файлу:
with open('highload.txt', 'r', encoding='Windows-1251') as f:
data = f.read(7)
print(data)
>>> Welcome to My Page!
Після запуску коду Python відображає лише перше слово “Welcome” — перші сім символів рядка “Welcome to My Page!” у highload.txt.
Якщо ж у фрагменті коду не вказувати аргументи після функції read(), Python покаже всю інформацію. В даному випадку весь рядок «Welcome to My Page!».
Інформацію можна читати за допомогою функції readline(). Наприклад, у нашому файлі є чотири рядки:
Прочитаємо лише перший рядок із цього файлу, не вказуючи кількість символів.
with open('highload.txt', 'r', encoding='Windows-1251') as f:
print(f.readline())
>>> Apple
Як бачите, Python відобразив лише перший рядок із цього списку. При неодноразовому виклику readline() ви зможете прочитати всі інші рядки:
with open('highload.txt', 'r', encoding='Windows-1251') as f:
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
>>> Apple
>>> Plum
>>> Banana
>>> Strawberry
Але погодьтеся, постійно вказувати ту саму функцію не зовсім зручно. Щоб зробити процес привабливішим, краще відобразити readline() у циклі:
with open('highload.txt', 'r', encoding='Windows-1251') as f:
for line in f:
print(line)
>>> Apple
>>> Plum
>>> Banana
>>> Strawberry
Є ще один варіант. У ньому вся інформація читається в один рядок. У цьому нам допомагає метод readlines(), який повертає інформацію як перерахування зі спецсимволами:
with open('highload.txt', 'r', encoding='Windows-1251') as f:
data = f.readlines()
print(data)
>>> ['Apple\n', 'Plum\n', 'Banana\n', 'Strawberry']
Альтернативою може бути конструктор списків list():
with open('highload.txt', 'r', encoding='Windows-1251') as f:
data = list(f)
print(data)
>>> ['Apple\n', 'Plum\n', 'Banana\n', 'Strawberry']
Якщо документ надто великий, то рекомендується не перевантажувати оперативну пам’ять в ПК, а зчитувати його частинами.
Щоб виконати запис у файл Python, потрібні функції write() і open() з режимами запису (‘w’, ‘a’, ‘w+’, ‘a+’). Давайте розглянемо кілька прикладів:
Режим ‘w’ — запис (якщо файл існує, його буде видалено).
with open('highload.txt', 'w') as file:
file.write("Welcome to My Page!!\n")
file.write("2024.\n")
Режим ‘a’ — додавання даних (додає дані до кінця файлу).
with open('highload.txt', 'a') as file:
file.write("New Year.\n")
Режим ‘w+’ — запис та читання (файл буде очищено, якщо він існує).
with open('highload.txt', 'w+') as file:
file.write("Writing and reading in the same file.\n")
file.seek(0) # переміщуємо курсор у перший рядок
content = file.read() # зчитуємо дані
print("More text here:")
print(content)
Режим ‘a+’ — додавання та читання (додає дані до кінця файлу).
with open('highload.txt', 'a+') as file:
file.write("New Year.\n")
file.seek(0)
content = file.read()
print("More text here after adding:")
print(content)
Робота з файловою системою – невід’ємна частина обов’язків будь-якого джуніора. Спочатку доведеться вчитися обробляти дані з файлів, зберігати їх чи управляти структурою каталогів. Оскільки ми вже знаємо, як відкривати і закривати файли в Python, і як записувати в них дані, тепер потрібно ознайомитися з іншими файловими операціями, які можуть знадобитися новачкові.
У синтаксисі Python є спеціальний модуль os для роботи з файловою системою. Ось кілька прикладів, як він використовується.
Створення нової папки:
import os
os.mkdir('new_folder')
Перевірка наявності файлу чи папки:
if os.path.exists('highload.txt'):
print("Файл існує")
Отримання списку файлів у директорії:
files = os.listdir('.')
print("Файли в поточній директорії:", files)
Видалення файлу або папки:
os.remove('highload.txt') # Видаляє файл
os.rmdir('new_folder') # Видаляє порожню папку
Використовуючи модуль os.path, можна працювати зі шляхами до файлів та папок. Перед нами приклад, як отримати абсолютний шлях:
import os
abs_path = os.path.abspath('highload.txt')
print("Абсолютний шлях до файлу:", abs_path)
Приклад комплексного використання
У цьому прикладі створюється нова папка, записується файл, а потім читаються його дані:
import os
# Створюємо нову папку
os.mkdir('test_folder')
# Шлях до файлу
file_path = os.path.join('test_folder', 'highload.txt')
# Запис у файл
with open(file_path, 'w') as file:
file.write("Hello from the new folder!")
# Читання з файлу
with open(file_path, 'r') as file:
content = file.read()
print("Вміст файлу:")
print(content)
# Видалення файлу та папки
os.remove(file_path)
os.rmdir('test_folder')
У наведеному вище прикладі Python створює папку test_folder, потім записує в ній файл highload.txt, читає його, а потім видаляє, як файл, так і всю папку.
Робота з файлами та файловою системою в Python складається з кількох відносно простих команд. Володіти цими базовими операціями — це ключова навичка будь-якого розробника-початківця. Вміючи працювати з файлами, ви зможете зберігати дані для подальшого використання: записувати результати обчислень, зберігати налаштування та логи програми, а також інформацію користувача.
Володіючи командами для обробки даних, ви зможете виконувати завдання, що стосуються вилучення та збереження їх у різних форматах. Крім того, вони допомагають в автоматизації багатьох рутинних завдань: наприклад, при необхідності резервного копіювання багатьох файлів.
Microsoft оголосила про початок інтеграції технологій Anthropic у свої сервіси, представивши новий інструмент Copilot Cowork,…
Компанія Anthropic оголосила про доступність у Claude Code бета-версії нового інструменту Code Review. Він розробленій…
Набір експлойтів Coruna, який в 2025 році використовувався російськими хакерами для злому iPhone українських громадян,…
Компанія Anthropic запустила Claude Marketplace — каталог програмного забезпечення, створеного сторонніми розробниками на базі LLM-моделей…
Згідно з новим звітом Microsoft Threat Intelligence, кіберзлочинці використовують штучний інтелект для широкого кола завдань,…
Найпопулярніший за останній місяць проект GitHub має явні ознаки шахрайства. Втім, це аж ніяк не…