feat(python进阶): 新增文件与目录操作课程
This commit is contained in:
71
02_python进阶/2_2_文件与目录操作/file_directory_example.py
Normal file
71
02_python进阶/2_2_文件与目录操作/file_directory_example.py
Normal file
@@ -0,0 +1,71 @@
|
||||
# 第 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()
|
||||
Reference in New Issue
Block a user