如何从子文件夹访问低于路径级别的文件
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>')
类似这样的方法可行:
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())
基本上,您检查您的文件是否存在于当前文件夹中。如果您的脚本位于您的根文件夹中,就会出现这种情况。如果不是,则假设您位于子文件夹中。因此,您尝试从下一级(您的根目录)获取文件。
它还没有完全准备好生产,但是对于您提到的特定情况,它应该可以工作。在生产中,您应该考虑可能有嵌套子文件夹或文件永久丢失的情况。
假设我的当前目录中有一个名为 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>')
类似这样的方法可行:
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())
基本上,您检查您的文件是否存在于当前文件夹中。如果您的脚本位于您的根文件夹中,就会出现这种情况。如果不是,则假设您位于子文件夹中。因此,您尝试从下一级(您的根目录)获取文件。 它还没有完全准备好生产,但是对于您提到的特定情况,它应该可以工作。在生产中,您应该考虑可能有嵌套子文件夹或文件永久丢失的情况。