使用脚本位置的相对路径时如何在python中打开文件
我有一个这样的目录结构使用脚本位置的相对路径时如何在python中打开文件,python,file,text,path,Python,File,Text,Path,我有一个这样的目录结构 MainFolder/unitTest/test.py MainFolder/run.py MainFolder/model/file.py MainFolder/config/config.conf 在file.py中,我正在尝试打开一个文件 f = open('config/config.conf', 'r') 通常从run.py调用file.py。当前工作目录是run.py的工作目录。如果我想访问配置文件。我进入config文件夹,然后进入文件'config/c
MainFolder/unitTest/test.py
MainFolder/run.py
MainFolder/model/file.py
MainFolder/config/config.conf
在file.py中,我正在尝试打开一个文件
f = open('config/config.conf', 'r')
通常从run.py调用file.py。当前工作目录是run.py的工作目录。如果我想访问配置文件。我进入config文件夹,然后进入文件'config/config.conf'
如果我想从单元测试运行它,我需要上升一级,然后进入config文件夹。'../config/config.conf'
是否有一种方法,当打开文件时,它会从file.py所在的位置开始查找该文件,这样无论从何处调用file.py,我都可以通过。/config/config.conf
这将托管在远程服务器上,因此我无法提供完整路径…您需要的可能是在中组织代码。它可以帮助您以Pythonic的方式设计/访问/管理每个文件
为了解决您的问题,您可以在
文件.py
的开头使用os.chdir
将MainFolder设置为当前工作目录。这意味着您需要使用run.py
中的os.path.getcwd
来查找main文件夹的完整路径,或者在部署时将其存储在配置文件中 当然,只需在项目根目录中创建一个文件,例如pwd.py
import os
PWD = os.path.dirname(os.path.abspath(__file__))
然后在模块中:
from pwd import PWD
f = open('%s/config/config.conf' % PWD, 'r')
这很有效。Tbh我觉得它有点愚蠢,没有办法从文件的路径,该文件实际上是。但这就行了