Слайд 1: Основы работы с файлами

Теория: Работа с файлами в Python

1. Открытие и закрытие файлов:

# Открытие файла
file = open('characters.txt', 'r')  # 'r' - режим чтения
content = file.read()
file.close()  # Важно закрывать файл!

# Использование контекстного менеджера (рекомендуется)
with open('characters.txt', 'r') as file:
    content = file.read()  # Файл закроется автоматически

2. Режимы открытия файлов:

# Режим чтения ('r')
with open('talents.txt', 'r') as file:
    data = file.read()

# Режим записи ('w') - создаёт новый или перезаписывает
with open('artifacts.txt', 'w') as file:
    file.write('Атака +18%\n')

# Режим добавления ('a') - добавляет в конец
with open('log.txt', 'a') as file:
    file.write('Новый артефакт получен\n')

# Бинарный режим ('rb', 'wb')
with open('character.dat', 'wb') as file:
    file.write(b'binary data')

3. Методы чтения файлов:

# Чтение всего файла
with open('dialog.txt', 'r') as file:
    content = file.read()  # Весь текст одной строкой
    
# Чтение построчно
with open('quests.txt', 'r') as file:
    lines = file.readlines()  # Список строк

# Чтение построчно в цикле
with open('items.txt', 'r') as file:
    for line in file:
        print(line.strip())  # strip() убирает \n

# Чтение определённого количества символов
with open('story.txt', 'r') as file:
    chunk = file.read(100)  # Первые 100 символов

4. Методы записи в файл:

# Запись строки
with open('inventory.txt', 'w') as file:
    file.write('Травы\n')
    file.write('Руды\n')

# Запись списка строк
items = ['Меч', 'Лук', 'Копьё']
with open('weapons.txt', 'w') as file:
    file.writelines(f'{item}\n' for item in items)

# Форматированная запись
character = {
    'name': 'Венти',
    'level': 90,
    'weapon': 'Небесное крыло'
}
with open('character.txt', 'w') as file:
    file.write(f"Имя: {character['name']}\n")
    file.write(f"Уровень: {character['level']}\n")
    file.write(f"Оружие: {character['weapon']}\n")

Важно помнить:

  • Всегда закрывайте файлы после использования
  • Используйте with для автоматического закрытия
  • 'w' перезаписывает файл, 'a' добавляет в конец
  • Для работы с путями используйте модуль pathlib
  • Проверяйте наличие файла перед чтением

Задача: Система сохранения прогресса

Создайте систему сохранения и загрузки информации о персонаже:

Подсказка: Примеры работы с файлами:

# Пример структуры файла сохранения
def save_character(character, filename):
    with open(filename, 'w') as file:
        file.write(f"Name: {character.name}\n")
        file.write(f"Level: {character.level}\n")
        
# Пример создания лога
def log_change(message):
    with open('changes.log', 'a') as log:
        timestamp = time.strftime('%Y-%m-%d %H:%M:%S')
        log.write(f"[{timestamp}] {message}\n")