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

时间:2019-08-23 00:33:42

标签: python json python-3.x python-venv

我正在使用API​​ star 0.5.X在python 3.7中练习一些API工作,而我的python脚本找不到与python文件位于同一文件夹中的.json文件。我正在使用Atom编辑器来运行脚本并正在运行该脚本,并且正在使用venv进行工作,这对我来说还很新。

我正在使用一个辅助函数通过“ 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

第二个打印语句打印正确的文件路径,即“ employees.json”和“ app.py”所在的路径。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

我只是部分理解,但显然这与Atom有关,该Atom具有用于工作文件的单独的temp目录,或类似的性质。使用vim编辑脚本,然后在终端中调用它时,问题已解决。