Работа с файлами и JSON в Python / Töö failide ja JSON-iga Pythonis

Открытие и закрытие файлов / Failide avamine ja sulgemine

# Открытие файла в разных режимах / Faili avamine erinevatel režiimidel
file = open('example.txt', 'r')  # Чтение ('r' - read) / Lugemine ('r' - read)
file = open('example.txt', 'w')  # Запись ('w' - write, перезаписывает файл) / Kirjutamine ('w' - write, kirjutab faili üle)
file = open('example.txt', 'a')  # Добавление ('a' - append, дописывает в конец) / Lisamine ('a' - append, lisab faili lõppu)

# Всегда закрывайте файл после работы / Sulgege fail alati pärast kasutamist
file.close()

Лучший способ работы с файлами – конструкция with / Parim viis failidega töötamiseks – with konstruktsioon

with open('example.txt', 'r') as file:  # Avab faili lugemiseks ja sulgeb automaatselt
    content = file.read()  # Чтение всего файла / Kogu faili lugemine

Чтение и запись данных / Andmete lugemine ja kirjutamine

# Чтение файла в список строк / Faili lugemine ridade nimekirjana
def read_file_to_list(filename: str) -> list:
    with open(filename, 'r', encoding='utf-8') as file:
        return [line.strip() for line in file]

# Запись списка в файл / Nimekirja kirjutamine faili
def write_list_to_file(filename: str, data: list):
    with open(filename, 'w', encoding='utf-8') as file:
        for item in data:
            file.write(f"{item}\n")

Удаление файлов / Failide kustutamine

import os

if os.path.isfile("old_file.txt"):  # Kontrollib, kas fail eksisteerib
    os.remove("old_file.txt")  # Удаление файла / Faili kustutamine

Работа с JSON / JSON-iga töötamine

Основные операции с JSON / JSON-i põhitehted

import json

# Python → JSON строка / Python → JSON string
data = {"name": "Alice", "age": 30, "city": "New York"}
json_string = json.dumps(data, indent=2)  # Красивое форматирование / Ilus vormindus

# Сохранение в файл / Salvestamine faili
with open("data.json", "w") as file:
    json.dump(data, file, indent=2)

# Чтение из файла / Lugemine failist
with open("data.json", "r") as file:
    loaded_data = json.load(file)

Пример: Контакты в телефонной книге / Näide: Kontaktid telefoniraamatus

import json

def save_contacts(contacts, filename="contacts.json"):
    with open(filename, "w") as file:
        json.dump(contacts, file, indent=2)

def load_contacts(filename="contacts.json"):
    try:
        with open(filename, "r") as file:
            return json.load(file)
    except FileNotFoundError:
        return {}

# Использование / Kasutamine
phone_book = load_contacts()
phone_book["John"] = {"phone": "123456", "email": "john@example.com"}
save_contacts(phone_book)

Пример: Сохранение настроек программы / Näide: Programmi seadete salvestamine


import json
import os

class AppConfig:
def __init__(self, config_file="config.json"):
self.config_file = config_file
self.default_config = {
"theme": "light", # Тема / Kujundus
"language": "en", # Язык / Keel
"font_size": 12, # Размер шрифта / Fondi suurus
"recent_files": [] # Последние файлы / Viimati kasutatud failid
}
self.config = self.load_config()

def load_config(self):
if os.path.exists(self.config_file):
with open(self.config_file, "r") as file:
try:
return json.load(file)
except json.JSONDecodeError:
return self.default_config
return self.default_config

def save_config(self):
with open(self.config_file, "w") as file:
json.dump(self.config, file, indent=2)

def update_setting(self, key, value):
self.config[key] = value
self.save_config()

# Использование / Kasutamine
config = AppConfig()
config.update_setting("theme", "dark")
print(f"Current theme: {config.config['theme']}") # Текущая тема / Praegune kujundus

Заключение / Kokkuvõte

  • Используйте with для безопасной работы с файлами / Kasutage with failide turvaliseks kasutamiseks
  • JSON идеален для хранения структурированных данных / JSON on ideaalne struktureeritud andmete salvestamiseks
  • Всегда обрабатывайте возможные ошибки при работе с файлами / Alati töödelge võimalikke vigu failidega töötamisel
  • Сохраняйте данные в удобочитаемом формате (используйте indent) / Salvestage andmed loetavas vormingus (kasutage indent)