温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - How to access a file a path level below from a subfolder
credentials environment-variables python python-3.x

python - 如何从子文件夹访问路径级别以下的文件

发布于 2020-04-05 20:36:33

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

现在假设我创建子文件夹,并把那里的东西是这样的:/subfolder/my_other_script.py如果我打印了,os.getenv('MY_CREDENTIALS')我的确credentials.json可以,但是我不能使用此文件,因为它在我的根目录(不在中/subfolder)中。因此,尽管该文件位于根目录中,但该如何使用呢?对我而言唯一有效的方法是复制credentials.jsonin /subfolder,但是那样我将拥有该文件的多个副本,而我不希望那样做。

感谢您的答复!

查看更多

提问者
math4everyone
被浏览
72
mc51 2020-02-02 21:29

这样的事情可能会起作用:

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())

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