如何在open()中使用相对路径在python中打开文件?

时间:2019-07-02 11:10:43

标签: python python-3.x

我正在尝试不为配置文件使用绝对路径,因为我需要将此路径部署在多个环境中,这里最好的选择是什么

下面的代码是我尝试过的,无法找到路径,但是我可以将文件放在同一位置。我在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'

2 个答案:

答案 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字符串