72 lines
2.1 KiB
Python
72 lines
2.1 KiB
Python
# 第 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()
|