我的Python脚本在同一目录中找不到JSON文件

2024-04-29 09:46:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用API star 0.5.X在Python3.7中练习一些API工作,我的python脚本找不到与python文件位于同一文件夹中的.json文件。我正在使用Atom编辑器编写和运行脚本,我正在使用一个venv,这对我来说是相当新的。在

我使用一个helper函数,使用“with open()”语句加载JSON数据。我尝试过使用相对和绝对文件路径,但在这两种情况下都无法找到文件。我尝试过使用终端和MacOS finder在Atom中启动该文件。 到目前为止,我得到的是:

import json
from typing import List
import os
from apistar import App, Route, types, validators
from apistar.http import JSONResponse

print(os.getcwd())
os.chdir('/Users/{myusernamehere}/100days/apistar')
print(os.getcwd())

#helpers
def _load_employee_data():
   with open('employees.json') as f:
       employees = json.loads(f.read())
       return employees

第二个print语句打印正确的文件路径,即雇员.json'和'应用程序副本'位于。在


Tags: 文件fromimport路径脚本apijsonos
2条回答

这是一个由Atom编辑器的工作方式引起的问题。通过切换到vim解决了这个问题。在

我只理解了一部分,但显然这与Atom有一个单独的temp目录用于工作文件有关,或者类似的东西。当使用vim编辑脚本,然后在终端中调用它时,问题就解决了。在

由于问题是特定于您的设置的,所以很难在代码中重现或提供解决方案。您的代码本身看起来不错,但有两种情况可能是导致您的问题的原因:

  • 当脚本运行时,Python需要访问适当的源文件夹和已安装的包;您应该让virtualenv这样的东西通过虚拟环境来管理它。从终端,您可以使用以下命令加载适当的虚拟环境:
    /path/to/your/venv/Scripts/activate.sh
    如果你这样做了,你应该期望你的脚本能找到它在虚拟环境中开发时所使用的库。确保在项目中包含类似requirements.txt的内容,以便在新的虚拟环境中,在不同的计算机上轻松地重新安装相同的模块。在
  • 当您的脚本由Python运行时,它有一个“工作目录”。这是Python启动的目录,而您的脚本找不到该文件(即使它可能与脚本本身在同一个文件夹中)可能是由于Python是从另一个目录启动的。在

相关问题 更多 >