Python 我的程序从Esclipse运行,但不是从终端运行,引用文件不存在(但它存在)

Python 我的程序从Esclipse运行,但不是从终端运行,引用文件不存在(但它存在),python,file-io,Python,File Io,因此,我有这段代码来打开文件“setup.json”,当我从eclipse运行程序时,它可以正常工作,但当我从Mac上的终端运行它时,我得到以下错误: IOError: [Errno 2] No such file or directory: 'setup.json' 以下是相关代码: file = "setup.json" for f in os.listdir(os.getcwd()): if f == file: file = f with open(file,

因此,我有这段代码来打开文件“setup.json”,当我从eclipse运行程序时,它可以正常工作,但当我从Mac上的终端运行它时,我得到以下错误:

IOError: [Errno 2] No such file or directory: 'setup.json'
以下是相关代码:

file = "setup.json"
for f in os.listdir(os.getcwd()):
    if f == file:
        file = f 
with open(file,"r") as fi:
    #(other code, irrelevant because the program crashes before this point

setup.json
与另外两个文件“
\\uuu init\uuuuuuuuuuuuuuuuupy
”和
\\uuuuuuu main\uuuuuuuuuupy
一起位于文件夹
HueSunset
中<代码>\\\uuu main\uuuu.py是运行此代码的文件。

以下是我可以想到的情况:

  • 清除IDEs缓存并重新运行
  • 确保没有其他同名文件
  • 检查文件权限
  • 最后,您可以在联机编辑器上运行代码,以确保正在运行的代码是正确的。如果是,则是您的文件和位置问题

  • 如果您的代码在当前目录中找不到它,它将保持
    文件
    不变。当前目录是执行脚本时所处的目录

    试试这个:

    file = "setup.json"
    for f in os.listdir(os.getcwd()):
        if f == file:
            break
    else:
        print("Oops. File not found") # or in real production code, raise an exception
    with open(f,"r") as fi:
        #rest of your code
    

    检查文件权限并确保您的脚本可以访问该文件。我投票将此问题作为离题回答,因为“在我的IDE中工作”是不相关的。@duffymo我认为这是相关的,因为它表明它工作正常,代码也很好,问题是在终端上运行时会出现什么不同。@suraj谢谢,将来将这样做与您的问题无关,但您的
    for
    循环是不必要和多余的。仅当
    f
    已设置为
    file
    的值时,才会将其分配给名称
    file
    。如果file==file:file=file,它基本上是这样的!1) 我一辈子都不知道该怎么做,2)没有其他同名文件3)我解锁了所有文件,所以这里应该没有问题4)我也这么做了,在我将文件添加到在线编辑器后,代码运行良好。我很确定我的文件位置被正确引用了。