MrFaws Docs
Lær Python

Filer og data

Arbejd sikkert med paths, tekst, JSON, CSV, bytes og store filer.

Paths og tekstfiler

from pathlib import Path

data_dir = Path.home() / ".my_app"
data_dir.mkdir(parents=True, exist_ok=True)

config_path = data_dir / "config.txt"
config_path.write_text("theme=dark\n", encoding="utf-8")
content = config_path.read_text(encoding="utf-8")

Brug pathlib i stedet for selv at samle paths med skråstreger. Angiv altid encoding for tekst.

JSON

import json

settings = {"theme": "dark", "notifications": True}
config_path = data_dir / "settings.json"

with config_path.open("w", encoding="utf-8") as file:
    json.dump(settings, file, indent=2, ensure_ascii=False)

with config_path.open(encoding="utf-8") as file:
    loaded = json.load(file)

Valider altid felter og typer efter indlæsning. JSON ved ikke, hvad din applikation forventer.

CSV

import csv

with Path("users.csv").open(newline="", encoding="utf-8") as file:
    for row in csv.DictReader(file):
        print(row["name"], row["email"])

Bytes og hashing

from hashlib import sha256

digest = sha256()
with Path("archive.zip").open("rb") as file:
    while chunk := file.read(1024 * 1024):
        digest.update(chunk)

print(digest.hexdigest())

Chunking gør, at store filer ikke behøver ligge samlet i RAM.

Atomisk skrivning

Skriv vigtig data til en midlertidig fil i samme mappe, flush den, og erstat derefter den gamle fil. Så efterlader et crash ikke en halvt skrevet konfiguration.

Øvelse

Lav en importør, der læser CSV, validerer hver række, rapporterer linjenummer på fejl og skriver de godkendte rækker til JSON.

On this page