Writing files in Python works through open() with mode "w" (overwrite/create), "a" (append), or "x" (create only if missing). Python's .write() method writes raw text exactly as provided and does not add a newline character automatically.
When saving configuration or state files in production, writing to a temporary file first and replacing the target prevents corrupted half-written files if a crash occurs mid-write.
Notice how "x" protects existing files by raising FileExistsError if the target path already exists.
from pathlib import Path
report = Path("daily_report.txt")
# Overwrite or create
with report.open("w", encoding="utf-8") as f:
f.write("Daily Summary
")
f.writelines(["Orders: 14
", "Errors: 0
"])
# Append a new line without erasing existing text
with report.open("a", encoding="utf-8") as f:
f.write("Status: Verified
")
print(report.read_text(encoding="utf-8"))
To avoid corrupting a critical JSON or config file if power fails mid-write, write to target.with_suffix(".tmp") and call tmp_path.replace(target)—OS rename operations replace targets atomically.
f.writelines() to insert newlines: writelines(["a", "b"]) outputs "ab" unless each string ends with "
"."w" when you wanted "a": Opening a log file with "w" erases every previous log entry immediately.f.write(42) raises TypeError; convert numbers with str(42) or use print(42, file=f)."x" mode do when creating a file?"x" creates a new file exclusively and raises FileExistsError if a file already exists at that path, avoiding accidental overwrites.
pathlib?Call Path("notes.txt").write_text("Hello
", encoding="utf-8"), which opens, writes, and closes the file automatically.
Python buffers writes in memory until the buffer fills, f.flush() is called, or the with block exits and closes the file.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.