Робота з файлами в 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+’). Давайте розглянемо кілька прикладів:
-
Запис (‘w’)
Режим ‘w’ — запис (якщо файл існує, його буде видалено).
with open('highload.txt', 'w') as file: file.write("Welcome to My Page!!\n") file.write("2024.\n")
-
Додавання (‘a’)
Режим ‘a’ — додавання даних (додає дані до кінця файлу).
with open('highload.txt', 'a') as file: file.write("New Year.\n")
-
Запис та читання в одному файлі (‘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)
-
Додавання з можливістю читання (‘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 складається з кількох відносно простих команд. Володіти цими базовими операціями — це ключова навичка будь-якого розробника-початківця. Вміючи працювати з файлами, ви зможете зберігати дані для подальшого використання: записувати результати обчислень, зберігати налаштування та логи програми, а також інформацію користувача.
Володіючи командами для обробки даних, ви зможете виконувати завдання, що стосуються вилучення та збереження їх у різних форматах. Крім того, вони допомагають в автоматизації багатьох рутинних завдань: наприклад, при необхідності резервного копіювання багатьох файлів.
Favbet Tech – це ІТ-компанія зі 100% украінською ДНК, що створює досконалі сервіси для iGaming і Betting з використанням передових технологіи та надає доступ до них. Favbet Tech розробляє інноваційне програмне забезпечення через складну багатокомпонентну платформу, яка здатна витримувати величезні навантаження та створювати унікальний досвід для гравців.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: