直接写"C: ew est"会报错,因Python将 、 解析为换行和制表符;应使用原始字符串r"C: ew est"或pathlib.Path避免转义问题,并注意跨平台时用PureWindowsPath解析再转当前系统路径。

为什么直接写 "C:
ew est" 会报错
因为 Python 把
当成换行符、 当成制表符,"C:
ew est" 实际被解析为 "C:" + "
" + "ew" + " " + "est"。运行时 os.path.exists() 返回 False,open() 直接抛 FileNotFoundError 或 OSError: [Errno 22] Invalid argument。
常见错误现象包括:
- 控制台报
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes - 路径字符串打印出来是乱码(比如换行、缩进错位)
- 文件存在但程序坚称“找不到”,尤其在传给
subprocess.run()或某些 C 扩展时
手动写死路径时,r"" 是最省事的解法
原始字符串让所有字符按字面量处理,不用逃逸、不需双写 。
但要注意边界条件:
- 必须用
r"C:Users ameile.txt",不能用r"C:Users ame"(末尾单个会把引号转义,语法错误) - 如果路径末尾是
,改用r"C:Users ame\"或"C:/Users/name/" -
r""只对**字面量字符串**有效;来自input()、sys.argv[1]、JSON 配置里的路径(如{"path": "C:logspp.log"})已由解析器还原,无需加r
跨平台项目请无条件用 pathlib.Path
pathlib 不是“可选项”,而是绕过所有字符串转义和分隔符陷阱的唯一可靠方式。它把路径当对象,不是字符串。
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
关键实操点:
- 构造路径:用
Path("C:/data")或Path(r"C:data")都行,内部自动标准化 - 拼接子路径:用
/操作符 ——Path("C:/data") / "raw" / "input.txt"→WindowsPath('C:/data/raw/input.txt') - 检查/读写:直接调
p.exists()、p.read_text()、p.mkdir(parents=True),比os.path直观且少出错 - 兼容旧库:需要字符串时用
str(p),不是repr(p)(后者会显示WindowsPath('...')前缀)
遇到 Windows 风格路径字符串(含 )在 Linux 上失效怎么办
这是 pathlib 最容易被忽略的坑:直接 Path(r"C:dataile.txt") 在 Linux 上会创建 PosixPath('C:dataile.txt'),而 Linux 文件系统根本不认 作分隔符,结果就是 FileNotFoundError。
正确做法是显式声明来源格式:
- 用
PureWindowsPath先解析:from pathlib import PureWindowsPath, Path - 再转为当前系统路径:
p = Path(PureWindowsPath(r"C:dataile.txt")) - 这样无论在哪跑,
p都指向正确的C:/data/file.txt(Linux)或C:dataile.txt(Windows)
硬编码盘符路径(如 C:)本身就不跨平台,这类路径必须配合运行时判断或配置驱动,不能靠路径工具“自动修复”。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










