如何在python中使用open()打开一个相对路径的文件?[duplicate]

vof42yt1  于 2023-01-04  发布在  Python
关注(0)|答案(2)|浏览(187)
    • 此问题在此处已有答案**:

os.makedirs doesn't understand "~" in my path(3个答案)
Tilde (~) isn't working in subprocess.Popen()(4个答案)
三年前关闭了。
我尽量不对配置文件使用绝对路径,因为我需要将其部署在多个环境中,此处的最佳选项是什么
下面的代码是我尝试过的,它不能找到路径,但是我可以在同一个位置查找文件。我在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'
ryevplcw

ryevplcw1#

首先,~/path/to/file始终是一个绝对路径(~扩展为$HOME),要在Python中进行这种替换,需要使用os.path.expanduser,如下所示:

with open(os.path.expanduser("~/scripts/config.yml"), 'r') as ymlfile:
    cfg = yaml.load(ymlfile)
kr98yfug

kr98yfug2#

您可以使用以下工具:

import os
path = os.getenv('HOME') + '/scripts/config.yaml'

~仅在shell中有效,在Python字符串中无效

相关问题