【问题标题】:Python can't find path with PowershellPython找不到Powershell的路径
【发布时间】:2019-04-13 10:28:51
【问题描述】:

我有一个相当不寻常的问题。我写了一个需要 API 密钥的 python 脚本。由于我不希望它们在互联网上四处飘荡,我创建了一个带有键的单独 .json 并将其添加到 .gitignore。到目前为止一切顺利。

我用 VSCode 编写了程序,在那里我可以毫无问题地执行它。但是,当我尝试将我的程序与普通的 PowerShell 一起使用时,它根本无法工作。我在外部 PS 上运行它时收到此错误消息:FileNotFoundError: [Errno 2] No such file or directory: './master-folder/key.json'

我对包使用 virtualenv,但这不应该影响任何东西(当然我在 PS 中激活了它)。这是代码的一部分:

keys_fp = './master-folder/key.json'

keys = load(open(keys_fp, 'r'))

文件夹结构如下:

.
├── programs
│   └── program.py
└── key.json

【问题讨论】:

  • 在你的脚本中添加一个os.getcwd() 调用,看看它告诉你什么。
  • @ritlew 它什么也没输出,有点奇怪
  • 对不起,我的意思是print(os.getcwd())
  • 这就是为什么你不应该使用相对路径。这似乎根本不是 powershell 问题。 keys_fp = os.getcwd() + '\..\key.json'
  • @nerdlab 作为最佳实践?总是。

标签: python powershell visual-studio-code filepath


【解决方案1】:

根据您的 cmets,您的工作目录是

E:\Git\master-folder\programs\

在您的脚本中,您正在引用

./master-folder/key.json

解析为

E:\Git\master-folder\programs\master-folder\key.json

但这并不存在。如果您调整脚本以使用正确的路径,它应该可以解决您的问题:

keys_fp = f'{os.getcwd()}\\..\\key.json'

根据this answer,您可以通过以下方式访问脚本的根目录:

import os
root = os.path.dirname(os.path.realpath(__file__))
keys_fp = f'{root}\\..\\key.json'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多