如何在使用脚本位置的相对路径时在 python 中打开文件



>我有一个这样的目录结构

MainFolder/unitTest/test.py
MainFolder/run.py
MainFolder/model/file.py
MainFolder/config/config.conf

在 file.py 里面,我正在尝试打开一个文件

f = open('config/config.conf', 'r')

通常,file.py 是从 run.py 调用的。当前工作目录是 run.py 的工作目录。所以如果我想访问配置文件.我转到配置文件夹,然后转到文件'config/config.conf'如果我想从单元测试运行它,我需要上一级,然后进入配置文件夹。'../config/config.conf'

有没有办法在打开文件时,它开始查找 file.py 所在的文件,以便无论从何处调用 file.py,我都可以../config/config.conf访问该文件

这将托管在远程服务器上,所以我无法给它完整的路径......

当然,只需创建一个文件,例如 pwd.py 在您的项目根目录中。

import os
PWD = os.path.dirname(os.path.abspath(__file__))

然后在您的模块中:

from pwd import PWD
f = open('%s/config/config.conf' % PWD, 'r')

你需要的可能是在Python模块中组织你的代码。它可以帮助您以Pythonic的方式设计/访问/管理每个文件。

要解决您的问题,您可以通过将 MainFolder 设置为当前工作目录来变通,并在file.py开头使用 os.chdir 。这意味着您需要拥有 MainFolder 的完整路径,方法是在 run.py 中使用os.path.getcwd来查找或在部署时将其存储在配置文件中。

最新更新