Ubuntu 20.04下Python用pathlib读跨目录文件报FileNotFoundError如何解决
问题根因
- 你代码里使用了Windows系统特有的反斜杠
\作为路径分隔符,而Ubuntu属于Linux系统,默认路径分隔符是正斜杠/,导致路径识别错误 - 直接写相对路径的基准是你执行脚本时的终端工作目录,而非
code.py本身存储的Folder1目录,如果你没有在Folder1目录下运行脚本,相对路径就会指向错误位置
稳妥实现方案
推荐基于__file__变量定位脚本自身位置,再拼接目标路径,完全跨平台,不受运行目录影响:
from pathlib import Path # 第一步:获取当前code.py所在的Folder1的绝对路径 script_dir = Path(__file__).absolute().parent # 第二步:拼接目标文件路径,pathlib会自动适配当前系统的路径分隔符 target_path = script_dir / ".." / "Folder2" / "test.txt" # 可选:标准化路径,消除../层级,方便排查问题 target_path = target_path.resolve() # 读取前可先判断存在性,提前定位错误 if target_path.is_file(): with open(target_path, 'r', encoding='utf-8') as f: content = f.read() else: print(f"文件不存在,实际拼接路径为:{target_path}")
额外说明
- pathlib支持直接用
/运算符拼接路径,无需手动处理不同系统的分隔符差异,代码可以同时在Windows、Linux、macOS下运行 - 遇到路径问题时直接打印
target_path变量,就能快速确认路径拼接是否符合预期
内容的提问来源于stack exchange,提问作者UbuntuEnt
相关产品推荐
相关产品推荐

