Python вміє читати та записувати файли. Для роботи з файлом потрібно його відкрити, попрацювати, закрити.
Режими відкриття:
• 'r' — читання (за замовчуванням)
• 'w' — запис (перезаписує файл)
• 'a' — додавання в кінець
• 'r+' — читання та запис
Рекомендується використовувати with — контекстний менеджер, який автоматично закриває файл:
with open('файл.txt', 'r', encoding='utf-8') as f:
content = f.read()
Методи читання:
• read() — весь вміст
• readline() — один рядок
• readlines() — список рядків
💡 Приклад коду
Вивід:
📝 ЗАВДАННЯ (3)
1.
Завдання 1: Щоденник
10 XP
Напишіть програму-щоденник: користувач вводить текст, програма додає його з датою та часом у файл diary.txt. При запуску програма показує вміст щоденника.
💡 Підказка: Використовуйте from datetime import datetime та datetime.now().strftime()
🔓 Розв'язок:
from datetime import datetime
import os
if os.path.exists('diary.txt'):
with open('diary.txt', 'r', encoding='utf-8') as f:
print('Ваш щоденник:')
print(f.read())
entry = input('Новий запис: ')
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M')
with open('diary.txt', 'a', encoding='utf-8') as f:
f.write(f'[{timestamp}] {entry}\n')
print('Запис додано!')
Вивід:
2.
Завдання 2: Блокнот із нотатками
20 XP
Напишіть програму-блокнот із меню: 1 — додати нотатку, 2 — показати всі нотатки, 3 — знайти нотатку за словом, 4 — вихід. Нотатки зберігаються у файл notes.txt (кожна на новому рядку) і завантажуються при запуску.
💡 Підказка: Для пошуку переберіть рядки файлу та перевірте входження слова через 'слово' in рядок. Режим 'a' для додавання.
🔓 Розв'язок:
import os
filename = 'notes.txt'
def load_notes():
if not os.path.exists(filename):
return []
with open(filename, 'r', encoding='utf-8') as f:
return [line.strip() for line in f if line.strip()]
def save_note(note):
with open(filename, 'a', encoding='utf-8') as f:
f.write(note + '\n')
while True:
print('\n1-Додати 2-Показати 3-Знайти 4-Вихід')
choice = input('Оберіть: ')
if choice == '1':
note = input('Нотатка: ')
save_note(note)
print('Збережено!')
elif choice == '2':
notes = load_notes()
if not notes:
print('Нотаток немає')
else:
for i, n in enumerate(notes, 1):
print(f'{i}. {n}')
elif choice == '3':
word = input('Шукати: ').lower()
notes = load_notes()
found = [n for n in notes if word in n.lower()]
if found:
for n in found:
print(f' - {n}')
else:
print('Нічого не знайдено')
elif choice == '4':
break
Вивід:
3.
Завдання 3: Статистика текстового файлу
30 XP
Напишіть програму, яка створює файл sample.txt з кількома рядками тексту (введіть з клавіатури, порожній рядок — кінець). Потім прочитайте файл і виведіть статистику: кількість рядків, слів, символів (без пробілів), найдовше слово.
💡 Підказка: Для підрахунку символів без пробілів використовуйте len(text.replace(' ', '').replace('\n', '')). Для найдовшого слова — max(words, key=len).
🔓 Розв'язок:
lines = []
print('Введіть текст (порожній рядок — кінець):')
while True:
line = input()
if line == '':
break
lines.append(line)
with open('sample.txt', 'w', encoding='utf-8') as f:
for line in lines:
f.write(line + '\n')
with open('sample.txt', 'r', encoding='utf-8') as f:
text = f.read()
all_lines = text.strip().split('\n')
all_words = text.split()
chars_no_space = len(text.replace(' ', '').replace('\n', ''))
longest = max(all_words, key=len) if all_words else ''
print(f'Рядків: {len(all_lines)}')
print(f'Слів: {len(all_words)}')
print(f'Символів (без пробілів): {chars_no_space}')
print(f'Найдовше слово: "{longest}" ({len(longest)} літер)')