1 of 20

Робота з текстовими файлами

Нова українська школа

Урок 43

Інформатика 8

teach-inf.com.ua

за підручником

Бондаренко О.О. та ін.

2 of 20

Робота з текстовими файлами

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

Файл може бути джерелом інформації (під час введення) і приймачем інформації (під час виведення даних).

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

3 of 20

Робота з текстовими файлами

Розгляньмо засоби Python для обміну даними між програмою і зовнішнім запам’ятовуючим пристроєм (диском). Програма може обробляти наявний файл або створювати новий. У будь-якому випадку робота з файлом складається з трьох етапів

Відкриття файлу

Читання з файлу або запис у файл

Закриття файлу

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

4 of 20

Відкриття файлу

Для відкриття файлу призначена вбудована функція open():

f = open(<шлях до файлу>, <режим відкриття>)

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

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

f

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

5 of 20

Відкриття файлу

Параметр Режим відкриття визначає, які дії можна буде виконувати з файлом. Основні режими відкриття такі:

відкриття тільки для читання;

'r'

відкриття для записування: знищує вміст файлу, якщо він існує; створює новий файл для запису, якщо не існує

'w'

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

'а'

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

6 of 20

Читання з файлу

Читання даних із файлу означає отримання доступу до них. Метод:

<файлова змінна>.read([n])

Зчитує дані з файлу, а саме:

  • зчитує всі дані з файлу, якщо аргумент n відсутній;
  • зчитує n символів, якщо метод викликано з аргументом (цілим числом n).

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

7 of 20

Читання з файлу

У файлі text.txt міститься рядок:

f = open("text.txt", "r")

print(f.read(1)) # Зчитати 1 символ із файлу

print(f.read()) # Зчитати всі інші символи

f.close()

Привітання від Python!

У консоль виводиться вміст файлу.

Результат

П

ривітання від Python!

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

8 of 20

Читання з файлу

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

Після зчитування елемента (символу або рядка) з файлу поточним (доступним) стає наступний елемент

Якщо файл містить декілька рядків тексту, можна прочитати файл порядково, скористувавшись циклом for:

f = open("numbers.txt", "r")

for line in f:

print(line, end = ‘’) # Якщо не вказати атрибут end = ",

f.close() # виводяться зайві порожні рядки

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

9 of 20

Запис у файл

Щоб записати рядок s у файл, для файлового об’єкта можна викликати метод write():

<файлова змінна>.write(s)

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

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

10 of 20

Запис у файл

Запишемо у файл два рядки,

f = open("f1 .txt", "w")

f.write("111111"+ '\n')

f.write("222222")

f.close()

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

11 of 20

Запис у файл

Файл f1.txt містить декілька чисел, розташованих по одному в рядку. Слід зчитати з файлу всі числа, знайти їх суму і дописати значення суми в кінець файлу.

f = open("f1.txt", "r")

suma = 0

for line in f:

suma = suma + int(line)

f.close()

f = open("f1.txt", "a")

s = 'сума = '+str(suma)

f.write(s)

f.close()

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

12 of 20

Відкриття й збереження файлів

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

Для завантаження модуля слід записати команду:

from tkinter import filedialog as fd

це псевдонім, яким ми, щоб скоротити код, замінятимемо назву модуля filedialog у разі виклику методів.

fd

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

13 of 20

Відкриття й збереження файлів

Розглянемо функції модуля filedialog.

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

надає діалогове вікно для відкриття файлу

fd.askopenfilename()

надає діалогове вікно для збереження файлу

fd.asksaveasfilename()

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

14 of 20

Відкриття й збереження файлів

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

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

15 of 20

Відкриття й збереження файлів

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

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

16 of 20

Питання для самоперевірки

  1. Як організувати читання даних із текстового файлу?
  1. Чим відрізняється робота функцій read(n), read() і readline()?
  1. Як організувати виведення даних у текстовий файл?
  1. Файл t.txt містить декілька рядків символів (і цифр, і літер). Складіть програму, яка переписує цифри з файлу t.txt у файл cif.txt, усі інші — у файл lit.txt.
  1. Обговоріть у групі переваги використання діалогових вікон для відкриття і збереження файлів.

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

17 of 20

Розгадайте ребус

Файл

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

18 of 20

Домашнє завдання

Проаналізувати

с. 205-209

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

19 of 20

Працюємо за комп’ютером

Сторінка

208-209

Розділ 5

§ 32

© Вивчаємо інформатику teach-inf.com.ua

20 of 20

Успіхів�у навчанні!

Нова українська школа

Урок 43

Інформатика 8

teach-inf.com.ua

за підручником

Бондаренко О.О. та ін.