Python 现代开发学习笔记

(一)用路径找到要保存的数据

1. Path 对象与路径拼接

先把两本书写进一个文本文件,再读回来:

# Path 表示文件系统路径;/ 在这里拼接目录与文件名。
from pathlib import Path

folder = Path("data")
folder.mkdir(parents=True, exist_ok=True)
path = folder / "titles.txt"
path.write_text("Python\nNumPy\n", encoding="utf-8")
print(path.read_text(encoding="utf-8").splitlines())
print(path.name, path.suffix, path.parent.name)
print(path.is_file())

输出 ['Python', 'NumPy']、titles.txt .txt data 和 True。mkdir 创建目录,parents=True 连同缺少的上级目录一起建立,exist_ok=True 接受目录已经存在。name 是文件名,suffix 是后缀,parent 是上一级路径。

write_text 写入整份字符串并关闭文件,目标原有内容被替换;read_text 读取整份文本并关闭文件。它们适合这份很小的记录,后面再处理逐行读取。exists() 判断路径是否存在,is_file() 与 is_dir() 区分文件和目录;sorted(folder.glob("*.txt")) 可以按名字查找这一层中的文本文件,rglob 继续搜索子目录。pathlib 路径操作

2. 当前工作目录与脚本位置

Path("data") 仍然是相对路径,它从第一章讲过的当前工作目录开始解释。把同一文件从另一个目录启动,可能会找到另一份 data。

# __file__ 是当前脚本文件的位置,resolve 把它转成解析后的绝对路径。
from pathlib import Path

script = Path(__file__).resolve()
data_path = script.parent / "data" / "books.json"
print(script.suffix)
print(data_path.is_absolute())
print(data_path.name)

输出 .py、True、books.json。这个例子要保存成脚本运行;交互窗口不是一份脚本文件,没有对应的 __file__。需要随代码定位的资料,可以从脚本位置出发;由用户选择的数据文件,则把路径作为启动参数传入。

相对路径从工作目录出发,脚本路径从文件位置出发

笔记正文与全部题解 · Ctrl / ⌘ K