Рубріки: Back-endОснови

Робота з файлами в Python: функції читання, запис у файл

Дмитро Сімагін

Давайте детально розберемо, як за допомогою 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

Читання даних у 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(). Наприклад, у нашому файлі є чотири рядки:

  • Apple
  • Plum
  • Banana
  • Strawberry

Прочитаємо лише перший рядок із цього файлу, не вказуючи кількість символів.

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 зробити запис у файл

Щоб виконати запис у файл Python, потрібні функції write() і open() з режимами запису (‘w’, ‘a’, ‘w+’, ‘a+’). Давайте розглянемо кілька прикладів:

  1. Запис (‘w’)

Режим ‘w’ — запис (якщо файл існує, його буде видалено).

with open('highload.txt', 'w') as file:
file.write("Welcome to My Page!!\n")
file.write("2024.\n")

 

  1. Додавання (‘a’)

Режим ‘a’ — додавання даних (додає дані до кінця файлу).

with open('highload.txt', 'a') as file:
file.write("New Year.\n")

 

  1. Запис та читання в одному файлі (‘w+’)

Режим ‘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)

 

  1. Додавання з можливістю читання (‘a+’)

Режим ‘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, і як записувати в них дані, тепер потрібно ознайомитися з іншими файловими операціями, які можуть знадобитися новачкові.

Робота з папками

У синтаксисі 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 складається з кількох відносно простих команд. Володіти цими базовими операціями — це ключова навичка будь-якого розробника-початківця. Вміючи працювати з файлами, ви зможете зберігати дані для подальшого використання: записувати результати обчислень, зберігати налаштування та логи програми, а також інформацію користувача.

Володіючи командами для обробки даних, ви зможете виконувати завдання, що стосуються вилучення та збереження їх у різних форматах. Крім того, вони допомагають в автоматизації багатьох рутинних завдань: наприклад, при необхідності резервного копіювання багатьох файлів.

 

 

Останні статті

Новою СЕО Sigma Software стане Катерина Тулузова

Sigma Software, що є підрозділом Sigma Software Group, заявила про зміну генерального директора. Компанію очолить…

06.06.2025

У Windows 11 з’явиться новий текстовий редактор Edit, легший за Блокнот. Він працюватиме з командного рядка

Microsoft готує додати у Windows 11 новий «легкий» текстовий редактор Edit. Він важить всього 230…

06.06.2025

OpenAI готує до релізу модель o3-pro. Вона найпотужніша для кодування, але коштує $200

Компанія OpenAI у найближчі тижні планує випустити оновлення для тарифного плану ChatGPT Pro, доступ до…

06.06.2025

СЕО знають, що через штучний інтелект будуть звільнення, але всім брешуть — софтверні інвестори

Керівники компаній часто вводять в оману, розповідаючи, що штучний інтелект лише підвищить продуктивність і не…

06.06.2025

США оголосили нагороду в $10 млн за інформацію про українського хакера, який втік у Росію

Уряд США пропонує до $10 мільйонів за інформацію про місцезнаходження розробника шкідливого програмного забезпечення RedLine…

06.06.2025

Google запевняє, що оновлена модель Gemini Pro 2.5 стала краще працювати з кодом

Google оголосила про оновлення своєї LLM-моделі Gemini 2.5 Pro, яка, за твердженням компанії, стала краще…

06.06.2025