Подорож №15. Робота з файлами даних

Пару слів про файли даних

З попередніх подорожей по країні Python вам зрозуміло, що програма отримує вхідні дані з клавіатури, або оператором =, або генератором випадкових чисел. Проте результати роботи програми виводяться на екран монітора. Ця подорож присвячена ще одному дуже важливому об'єкту в якому мають знаходитися як вхідні так і вихідні дані. Цей об'єкт - файл.

Відкриваємо доступ до файлу

Перш ніж здійснювати операції обміну даними з файлом (зчитування та запис) необхідно відкрити доступ до цього файлу. Припустимо, що у файлі input.txt знаходяться дані і їх треба зчитати в програму. Для доступу треба скористатися функцією open

Файлова змінна

В програмі створюється змінна f. Ця змінна є "представником" фізичного файлу input.txt в оперативній пам'яті. Операції з файлом виконуються не безпосередньо з файлом, а через змінну f.

open

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

Файл з даними

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

Нехай файл з програмою Python знаходиться в теці Proect, а файл з даними input.txt знаходиться в теці data. Тоді в команді open треба прописати шлях до input.txt

f = open('data/input.txt', 'r')

Опції функції open

Опції функції вказують на режим доступу. Наприклад: опція 'r' означає, що файл відкривається для читання.

Файл можна відкривати з такими опціями:

'r' - відкрити файл для читання даних;
'w' - відкрити файл для запису у файл;
'x' - ця опція означає створити новий порожній файл. Якщо файл з вказаним ім*ям існує, то виклик open завершиться з помилкою;
'a' - відкрити файл для запису в кінець файлу.
'+' - відкриває файл для оновлення.

Це не повний перелік опцій. Але його достатньо для початку роботи з файлами.

Зчитування даних з файлу. read

Припустимо, що в теці знаходиться текстовий файл file.txt. По - перше треба відкрити доступ до нього f = open('file.txt','r') Для зчитування даних з файлу треба звернутися до файлової змінної f методом read.

Зчитати весь файл в змінну. f.read()

Для зчитування всього файлу f в змінну s, неохідно звернутися до файлової змінної методом read().

s = f.read()

Дані з файлу присвоюються змінній s. Змінна s текстового типу. Якщо після s = f.read() додати print(s), то вміст файлу виведеться на екран.

Зчитати декілька символів з файлу f.read(n)

Для зчитування даних файлу певної довжини, необхідно звернутися до файлової змінної методом read(n), де n - кількість символів що зчитуються. При цьому "файловий" курсор пересунеться на n символів.

s = f.read(3)

Зчитається 3 символи з файлу в змінну s.

Зчитати окремі рядки файлу f.readline(n)

Для зчитування кожного рядка файла окремо, необхідно звернутися до файлової змінної методом readline().

a = f.readline()
b = f.readline()

В змінну а зчитається один рядок файлу, в змінну b - інший.

Числа також можна зберігати в текстових файлах

Якщо в текстовому файлі зберігаються числа то для їх опрацювання необхідно здійснити перетворення функціями int та float. Наприклад: якщо в змінну s було зчитано ціле число, то його треба перетворити
s = int(s)

Запис даних у файл. write

Для запису текстових даних у файл необхідно, по-перше відкрити файл для запису функцією open з параметром 'w':
f = open('out.txt','w')

Формуємо текстовий рядок для запису у файл

Для запису числових даних перетворюємо їх на текстовий рядок за допомогою str

s = 5
s = str(s)

Якщо необхідно сформувати декілька рядків тексту, скористатися '\n'


s = 'перший рядок ' + '\n' + 'другий рядок'

Запис готового рядка в файл

Після того як текстовий рядок сформовано його можна записати у файл звернувшись до текстової змінної методом write.

f.write(s)

Не забуваємо закрити файл.

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

f.close()

Ось таким простим методом файл закривається по закінченню роботи з ним.

Приклади роботи з файлами

Припустимо, що в текстовому файлі resume.txt зберігаються анкетні дані

Петренко Петро
програміст
1972

Приклад №1: зчитування та виведення на екран всього файлу

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

  Вікно редактора Python
f = open('resume.txt',r)
s = f.read()
f.close()
print(s)

Після натискання F5:

  Вікно команд Python Shell
Петренко Петро
програміст
1972

Приклад №2 Зчитування окремого рядка в окрему змінну, обробка та запис у інший файл

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

  Вікно редактора Python
f = open('resume.txt', 'r') # Відкриваємо файл для читання
# Зчитуємо кожний рядок в окрему змінну.
a = f.readline() # Петренко Петро
b = f.readline() # програміст
c = f.readline() # 1972
c = int(c) # перетворюємо текстовий тип на int
f.close() # Закриваємо файл
# Зиміні а в c готові до використання.
y = int(input('Який за вікном рік ? ')) # Запитуємо поточний рікз клавіатури.
v = y - c # Підраховуємо вік
v = str(v) #для запису у файл перетворюємо число у текстовий рядок
s = a+ '\n' + 'посада: ' + b + '\n' + 'вік: біля ' + v + ' р.' #формуємо текстовий рядок
#виводимо сформований рядок s на екран та записуємо його у файл report.txt
print(s)
f = open('report.txt','w') # відкриваємо файл report.txt для запису
f.write(s) # записуємо рядок у файл
f.close()

Після натискіння F5:

  Вікно команд Python Shell
Який за вікном рік ? 2019
Петренко Петро
посада: програміст
вік: біля 47 р.

Практичні впарави

Задача №1. Чек обміну валюти

У файлі input.txt два рядки. В першому рядку розміщується курс долара, в другому - кількість доларів для обміну. Програма має створити вихідний файл output.txt. В цей файл має бути записана сума, що отримана при конвертації заданої кількості доларів.

Наприклад:

input.txt output.txt
25.6
56
Сума конвертації
1433.60