执行规则

/project
   |---A
   |   |---a.py
   |---B
   |   |---test.txt

相对路径的根节点,以执行 python 脚本的目录为准
在 /project/A 目录下 python a.py ,则 a 中的相对路径,实际根节点是 A
在 /project目录下 python A/a.py ,则 a 中的相对路径,实际根节点是 project

例如,a.py 中如果有这样一条命令:

with open('B/test.txt', 'r') as f: 
	print("success!")

如果在 /project目录下 python A/a.py ,则可以执行;
如果在 /project/A 目录下 python a.py ,则提示找不到文件。

如何避免

工具:os.path.dirnameos.path.joinos.path.abspath

修改 a.py

import os
import os.path as osp

relative_path = 'B/test.txt'
pth           = osp.abspath( relative_path )

with open( pth, 'r') as f:
    print("success!")

更多推荐

菜鸟篇--python相对路径