如何确定python文件调用其他文件的相对路径?

本文用于确定其他文件的相对路径

首先说结论:python代码在运行中,调用其他的文件时,寻找路径是以终端中的打开的文件夹为根路径,以此为基准去寻找其他文件,而不是以python代码所在的文件夹为根路径去寻找其他文件! 如果是在vscode中,那么根路径就是资源管理器中打开的最顶层的文件夹。

解释说明

下面举例来说明。

假设有如下的文件夹结构:

	current
	├── a
	│   └── 1.py
	└── b
	    └── 2.py

终端中打开current文件夹,下面的代码运行时都是以此文件夹为根路径。

错误示范

其中文件1.py内容如下:

import os

print('================================')
print('file: 1.py')
print(os.getcwd()) # 获取当前目录
print(os.path.exists('../b/2.py'))

这时,在终端中打开current文件夹,即以current文件夹为根目录,运行1.py,命令如下:

~/myCode/test/current$ python a/1.py

运行结果如下:

================================
file: 1.py
/home/ljw/myCode/test/current
False

发现当前目录并非1.py所在的目录:current/a,而是current,即以终端中打开的文件夹为根目录。同时,寻找2.py文件也是不存在的,因为根目录路径就错了。

正确姿势

这时把文件1.py内容修改如下:

import os

print('================================')
print('file: 1.py')
print(os.getcwd()) # 获取当前目录
print(os.path.exists('b/2.py'))

再运行命令:

python a/1.py

输出如下:

================================
file: 1.py
/home/ljw/myCode/test/current
True

这时发现,可以找到文件2.py了。

总结

在写python代码时,如果要调用其他文件,寻址路径应当以在终端中打开的文件夹为根路径,而不是以当前python文件所在的文件夹为根路径去寻找。

猜你喜欢

转载自blog.csdn.net/m0_59019651/article/details/124702973