在第9章的结尾,我们给出了一个练习,题目是这样的:
希望你实现这样一个脚本:
1)在该脚本的同级目录自动创建一个exercise的目录。
2)在exercise这个目录下创建10个空目录(文件夹),再创建10个文件,其中前五个文件是txt文件,后五个文件是json文件,我们可以通过数字编号来命名这些目录和文件,在创建文件的时候,同时写入内容,写什么内容自己来定。
3)将txt文件移动到和其编号相同的目录中,比如1.txt移动到目录1中,6.json移动到目录6中。
4)遍历exercise目录,分别过滤出txt文件和json文件,输出它们的路径。
5)删除exercise目录。
接下来我们看一下示例代码:
from pathlib import Pathimport jsonimport shutil# 1)在该脚本的同级目录自动创建一个exercise的目录exercise_dir: Path = Path("exercise")# 2)创建10个目录或文件for i in range(1, 11): # 创建空目录 empty_dir = exercise_dir / str(i) empty_dir.mkdir(parents=True, exist_ok=True) # 创建5个txt文件并写入内容 if i < 6: txt = exercise_dir / f"{i}.txt" txt.write_text(f"{i}", encoding="utf-8") else: # 创建5个json文件并写入内容 json_file = exercise_dir / f"{i}.json" json_data = { "id": i, "name": "未来编程实验室", "book": "《Python从入门到实战》" } json_str = json.dumps(json_data, ensure_ascii=False, indent=4) json_file.write_text(json_str, encoding="utf-8")# 3)将txt文件移动到和其编号相同的文件夹中,比如1.txt移动到目录1中,6.json移动到目录6中for item in exercise_dir.iterdir(): if item.is_file(): target = exercise_dir / item.stem shutil.move(item, target)# 4)遍历exercise目录,分别过滤出txt文件和json文件,输出它们的路径txt_files = []json_files = []for file in exercise_dir.rglob("*"): if file.is_file(): suffix = file.suffix.lower() if suffix == ".txt": txt_files.append(str(file)) elif suffix == ".json": json_files.append(str(file))print(txt_files)print(json_files)# 5)删除exercise目录shutil.rmtree(exercise_dir)如果不执行任务“5)删除exercise目录”,我们能看到生成的一些目录和文件,如果执行了,最后就什么都没有了。
你在练习时遇到了哪些问题?我们可以一起来讨论。