Як працювати з файлами в Python

У будь-якій мові програмування обробка файлів є важливим аспектом. Крім того, Python підтримує роботу з файлами в різних режимах, як-от читання та запис у файли тощо.

До кінця цього підручника ви зможете:

  • відкривати та читати файли на Python,
  • читати рядки з текстового файлу,
  • записувати та додавати до файлів, а також
  • використовувати контекстні менеджери для роботи з файлами в Python.

Як читати файл на Python

Щоб відкрити файл у Python, ви можете використовувати загальний синтаксис: open(‘file_name’,’mode’).

  • Тут file_name — це ім’я файлу.

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

  • Параметр mode визначає режим, у якому ви хочете відкрити файл.

Стандартним режимом відкриття файлу є читання, позначене літерою «r». Однак рекомендовано вказувати режим явно.

Перш ніж почати, давайте подивимося на файл lib.txt, який ми будемо використовувати в цьому прикладі.

📁 Завантажте текстовий файл і код, використаний у цьому посібнику, з це репо GitHub.

Наведений нижче фрагмент коду показує, як можна відкрити текстовий файл «lib.txt» у Python за допомогою функції open() і прочитати його вміст.

file = open('lib.txt','r')
contents = file.read()
print(contents)
file.close()


# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

У наведеному вище прикладі

  • Функція open() повертає файловий об’єкт, і ми вирішили назвати його файлом.
  • Далі ми викликаємо метод read() у файлі.
  • Тепер змінна contents містить вміст файлу. І ми його роздруковуємо.
  • Нарешті, ми закриваємо файл.

Однак, якщо ви забудете закрити файл, це призведе до втрати ресурсів. Якщо ви працюєте з великою кількістю таких файлів, може знадобитися значне використання пам’яті. Це тому, що ви відкрили кілька файлів, але не закрили жодного з них.

  7 найкращих неперетворених хостингів серверів для всіх

Тепер давайте дізнаємося, як краще відкривати файли за допомогою контекстні менеджери. Наведений нижче фрагмент коду показує, як їх можна використовувати.

with open('lib.txt','r') as f:
  contents = f.read()
  print(contents)

Використовуючи менеджери контактів для роботи з файлами, вам не обов’язково використовувати метод close(). Файли автоматично закриваються після завершення операції введення-виведення.

Як читати рядки з файлу в Python

У нашому прикладі текстового файлу ми мали лише кілька рядків. Тож прочитати весь вміст файлу одночасно не було проблемою.

Однак, коли вам потрібно читати великі файли, використання методу read(), як показано вище, може бути не дуже ефективним.

Насправді, якщо текстовий файл має дуже великий розмір, незабаром у вас може закінчитися пам’ять. Ось чому ви можете прочитати рядки лише для читання з текстового файлу, і ви дізнаєтеся, як це зробити в цьому розділі.

Використання методу readline() Python для читання рядків із файлу

Метод readline() читає по одному рядку з файлу.

Запустіть наведений нижче фрагмент коду.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  line = f.readline()
  print(line)


# Output
Hello, there!

Here are a few helpful Python libraries:

Ви бачите, що після першого виклику методу readline() друкується перший рядок у файлі. А другий виклик методу readline() повертає другий рядок у файлі.

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

У Python ви можете використовувати метод tell(), щоб отримати поточне розташування покажчика файлу. А щоб перемістити покажчик файлу в певне місце, ви можете скористатися методом seek().

У наведеному нижче фрагменті коду ми використовуємо f.seek(0) після першого виклику методу. Це перемістить покажчик файлу на початок текстового файлу. Тому обидва рази друкується перший рядок у файлі.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  f.seek(0)
  line = f.readline()
  print(line)


# Output
Hello, there!

Hello, there!

Використання методу readlines() Python для читання рядків із файлу

Є ще один схожий метод під назвою readlines().

  З Vyond легко створювати анімаційні та пояснювальні відео

Коли ви запустите наведений нижче фрагмент коду, ви побачите, що метод readlines() повертає список усіх рядків у файлі.

with open('lib.txt','r') as f:
  lines = f.readlines()
  print(lines)


# Output
['Hello, there!n', 'Here are a few helpful Python libraries:n', 
'1) NumPyn', '2) pandasn', '3) matplotlibn', 
'4) seabornn', '5) scikit-learnn', '6) BeautifulSoupn', 
'7) Scrapyn', '8) nltkn', '9) Bokehn', '10) statsmodelsn', 'n']

Використання циклу Python for для читання рядків із файлу

Щоб прочитати рядки з текстового файлу, ви також можете використовувати цикл for.

Коли у вас є файловий об’єкт, ви можете використовувати цикл for для перегляду вмісту файлу — один рядок за раз і роздруковувати їх, як показано нижче. Зверніть увагу, що ми отримуємо доступ лише до одного рядка за раз і не читаємо весь вміст файлу.

with open('lib.txt','r') as f:
  for line in f:
    print(line, end='')

Примітка. Під час використання функції print() Python роздільником за замовчуванням є символ нового рядка — «n». Але в оригінальному файлі ми не маємо цих нових рядків. Тому встановіть аргумент роздільника на порожній рядок: end = ”, щоб надрукувати вміст файлу таким, яким він є.

Як читати фрагменти вмісту з файлу в Python

У Python ви також можете вибрати читання вмісту файлу у вигляді невеликих фрагментів.

Прочитайте код нижче:

  • Тут ми встановлюємо chunk_size на 50. Це означає, що перші 50 символів у файлі будуть прочитані, і ми також роздрукуємо їх.
  • Тепер викличте метод tell() для файлового об’єкта f. Ви бачите, що покажчик файлу тепер знаходиться в позиції 51, що відповідає очікуванням.
chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk)
  current = f.tell()
  print(f"Current position of file pointer: {current}")

# Output
Hello, there!
Here are a few helpful Python librar
Current position of file pointer: 51

Ви також можете використовувати цю техніку для читання всього файлу у вигляді невеликих фрагментів.

Наведений нижче фрагмент коду показує, як це можна зробити.

chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk,end='')

  while(len(chunk)>0):
    chunk = f.read(chunk_size)
    print(chunk,end='')

# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

Тут ми використовуємо цикл while для читання вмісту файлу. Ми читаємо вміст файлу фрагментом розміром 50, доки не досягнемо кінця файлу. ✅

  Як виправити код помилки DirectTV 775

Як писати у файл на Python

Щоб записати текстовий файл на Python, ви повинні відкрити його в режимі запису, вказавши «w».

Наведений нижче фрагмент коду показує, як це зробити.

with open('new_file.txt','w') as f:
  f.write('Hello, Python!')

Ви побачите, що «new_file.txt» створено у вашому робочому каталозі.

Тепер запустіть наведену вище комірку коду ще раз.

У вашому терміналі виконайте таку команду:

cat new_file.txt

# Output: Hello, Python!

В ідеалі ми записали у файл двічі. Отже, привіт, Python! треба було друкувати двічі, так?

Але ви побачите, що він був надрукований лише один раз. Ну, це тому, що коли ви відкриваєте файл у режимі запису (w), ви фактично перезаписуєте вміст файлу новим вмістом.

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

Як додати до файлу в Python

Якщо ви хочете додати вміст до файлу без перезапису, відкрийте його в режимі додавання.

Для цього використовуйте `’a’—a для додавання—і явно вкажіть режим.

Потім двічі запустіть наступну комірку коду.

with open('new_file.txt','a') as f:
  f.write('Hello, Python!')

Зверніть увагу, що текст тепер друкується двічі, коли ми додаємо до файлу.

cat new_file.txt

# Output: Hello, Python!Hello, Python!

Висновок

Давайте коротко підсумуємо те, що ми розглянули в цьому посібнику.

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

Сподіваюся, цей посібник був для вас корисним. Тепер, коли ви навчилися працювати з текстовими файлами в Python, дізнайтеся, як працювати з файлами JSON у Python.

пов’язані:

Перевірте довжину списку в Python у 3 кроки.