# 第 2-2 课完整示例:文件与目录操作 # # 本程序只会在当前课程目录的 runtime_data 文件夹中创建和修改文件。 # runtime_data 已被本课的 .gitignore 忽略,不会污染 Git 变更记录。 from pathlib import Path # __file__ 表示当前 Python 文件的位置。 # parent 表示当前文件所在的目录。 LESSON_DIR = Path(__file__).parent DATA_DIR = LESSON_DIR / "runtime_data" NOTES_FILE = DATA_DIR / "learning_notes.txt" def create_data_directory(): """创建保存示例数据的目录。""" # parents=True 表示需要时一并创建上级目录。 # exist_ok=True 表示目录已经存在时不报错。 DATA_DIR.mkdir(parents=True, exist_ok=True) print(f"数据目录已准备:{DATA_DIR.name}") def write_initial_notes(): """写入初始学习记录。""" notes = "第一条:学习使用 Path 表示路径。\n" # write_text() 会覆盖文件原有内容。 # encoding="utf-8" 可以正确保存中文。 NOTES_FILE.write_text(notes, encoding="utf-8") print(f"初始内容已写入:{NOTES_FILE.name}") def append_note(): """在文件末尾追加一条学习记录。""" # open() 打开文件后,需要在操作结束时关闭文件。 # with 语句会帮助我们自动关闭文件。 # 模式 "a" 表示追加,不会清空原有内容。 with NOTES_FILE.open("a", encoding="utf-8") as file: file.write("第二条:学习读取和追加文件。\n") print("新的学习记录已追加。") def read_notes(): """读取并输出全部学习记录。""" content = NOTES_FILE.read_text(encoding="utf-8") print("学习记录内容:") print(content, end="") def show_directory_contents(): """遍历并显示数据目录中的内容。""" print("数据目录中的文件:") for path in DATA_DIR.iterdir(): if path.is_file(): print(f"- {path.name}") def main(): """按照安全顺序运行文件与目录示例。""" create_data_directory() write_initial_notes() append_note() read_notes() show_directory_contents() if __name__ == "__main__": main()