如何从子文件夹访问低于路径级别的文件

How to access a file a path level below from a subfolder

假设我的当前目录中有一个名为 credentials.json 的文件、一个环境变量 MY_CREDENTIALS=credentials.json 和一个通过 os.getenv('MY_CREDENTIALS') 使用此环境变量的脚本 main.py

现在假设我创建了一个子文件夹并在其中放置如下内容:/subfolder/my_other_script.py。 如果我打印 os.getenv('MY_CREDENTIALS') 然后我确实得到 credentials.json 但我不能使用这个文件,因为它在我的根目录中(不在 /subfolder 中)。那么,这个文件虽然在根目录下,我该如何使用呢?唯一对我有用的是在 /subfolder 中制作 credentials.json 的副本,但这样我就会有这个文件的多个副本,我不想那样做。

感谢您的回复!

您可以创建符号 link

os.symlink('<root>', '<subfolder>')

https://docs.python.org/3/library/os.html#os.symlink

类似这样的方法可行:

from pathlib import Path
import os

FILENAME = os.getenv('MY_CREDENTIALS')
filePath = Path(FILENAME)

if filePath.exists() and filePath.is_file():
    print("Success: File exists")
    print(filePath.read_text())
else:
    print("Error: File does not exist. Getting file from level below.")
    print((filePath.absolute().parent.parent / filePath.name).read_text())

基本上,您检查您的文件是否存在于当前文件夹中。如果您的脚本位于您的根文件夹中,就会出现这种情况。如果不是,则假设您位于子文件夹中。因此,您尝试从下一级(您的根目录)获取文件。 它还没有完全准备好生产,但是对于您提到的特定情况,它应该可以工作。在生产中,您应该考虑可能有嵌套子文件夹或文件永久丢失的情况。