Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用脚本位置的相对路径时如何在python中打开文件_Python_File_Text_Path - Fatal编程技术网

使用脚本位置的相对路径时如何在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我觉得它有点愚蠢,没有办法从文件的路径,该文件实际上是。但这就行了