我正在尝试不为配置文件使用绝对路径,因为我需要将此路径部署在多个环境中,这里最好的选择是什么
下面的代码是我尝试过的,无法找到路径,但是我可以将文件放在同一位置。我在Redhat服务器上使用Python3.6。
with open("~/scripts/config.yml", 'r') as ymlfile:
cfg = yaml.load(ymlfile)
我收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: '~/scripts/config.yml'
答案 0 :(得分:5)
首先,~/path/to/file
始终是绝对路径(~
扩展为$HOME
)。要在Python中进行替换,您需要使用os.path.expanduser
,例如:
with open(os.path.expanduser("~/scripts/config.yml"), 'r') as ymlfile:
cfg = yaml.load(ymlfile)
答案 1 :(得分:1)
您可以执行以下操作:
import os
path = os.getenv('HOME') + '/scripts/config.yaml'
~
仅适用于shell,不适用于Python字符串