【发布时间】:2020-07-02 00:28:03
【问题描述】:
我需要创建一个以当前目录开头的相对路径作为“。”点
例如,在 windows “.\envs\.some.env” 或 “./envs/.some.env” 其他地方
我想使用 pathlib 来做到这一点。找到了一个解决方案,但它有一个笨拙的替换语句。有没有更好的方法来使用 pathlib?
使用的是django-environ,目标是支持多个env文件。工作文件夹包含一个 envs 文件夹,该文件夹中有多个 env 文件。
import environ
from pathlib import Path
import os
domain_env = Path.cwd()
dotdot = Path("../")
some_env = dotdot / "envs" / ".some.env"
envsome = environ.Env()
envsome.read_env(envsome.str(str(domain_env), str(some_env).replace("..", ".")))
print(str(some_env))
print(str(some_env).replace("..", "."))
dot = Path("./") # Path(".") gives the same result
some_env = dot / "envs" / ".some.env"
print(str(some_env))
在 windows 上给出:
..\envs\.some.env
.\envs\.some.env
envs\.some.env
【问题讨论】:
-
为什么
envs\.some.env不够用?对于Path('envs\\.some.env').open()和Path('.\\envs\\.some.env').open()等常见用途,它们应该是相同的。 -
`.\`是当前目录,可以省略。
-
感谢您的快速回复。使用 django-environ 模块,我可以使它工作的唯一方法是使用当前目录的点。然后我想迁移到 pathlib 解决方案。
-
是的,这会起作用,而且有些地方 os 库的功能比 pathlib 更多。这可能是这些地方之一。我想知道是否有一个 pathlib 方法。
-
我刚才有这个 exact 问题,因为我正在创建一个路径,我要传递给 nodejs
require()语句,其中./something.js和something.js被解释不同。
标签: python django environment-variables pathlib