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

标签 python python-3.x environment-variables credentials

假设我有一个名为 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.json/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())

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

关于python - 如何从子文件夹访问路径级别以下的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60006753/

相关文章:

docker - 在Dockerfile中使用代理运行apt-get

python - Python 中的正则表达式分组

linux - 从 package.json 运行 `source` 以设置脚本运行的环境变量

python - 如何使用 MongoAlchemy 删除数据库的所有内容

Python+Altair (Vega-Lite) : Web server

python - 尝试在生产环境中部署应用程序时出现此 No module returned 'django.urls' 错误

python-3.x - 为什么 np.exp(x) 不等于 np.exp(1)**x

java - 如何在 Java 中获取 Apache 环境变量?

python - flask 在哪里寻找图像文件?

python - 在Python中从剪贴板复制内容时出现tkinter错误