3 回答

TA贡献1816条经验 获得超4个赞
尝试使用相对于当前文件路径的文件名。“ ./my_file”的示例:
fn = os.path.join(os.path.dirname(__file__), 'my_file')
在Python 3.4+中,您还可以使用pathlib:
fn = pathlib.Path(__file__).parent / 'my_file'

TA贡献2019条经验 获得超9个赞
我经常使用与此类似的东西:
import os
DATA_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), 'datadir'))
# if you have more paths to set, you might want to shorten this as
here = lambda x: os.path.abspath(os.path.join(os.path.dirname(__file__), x))
DATA_DIR = here('datadir')
pathjoin = os.path.join
# ...
# later in script
for fn in os.listdir(DATA_DIR):
f = open(pathjoin(DATA_DIR, fn))
# ...
变量
__file__
保存您在其中编写该代码的脚本的文件名,因此您可以创建相对于脚本的路径,但仍使用绝对路径编写。由于以下几个原因,它运行良好:
路径是绝对的,但仍然是相对的
该项目仍可以部署在相对的容器中
但是您需要注意平台兼容性-Windows的os.pathsep与UNIX不同。
添加回答
举报