Python 我的程序从Esclipse运行,但不是从终端运行,引用文件不存在(但它存在)
因此,我有这段代码来打开文件“setup.json”,当我从eclipse运行程序时,它可以正常工作,但当我从Mac上的终端运行它时,我得到以下错误: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,
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是运行此代码的文件。以下是我可以想到的情况:
如果您的代码在当前目录中找不到它,它将保持
文件
不变。当前目录是执行脚本时所处的目录
试试这个:
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)我也这么做了,在我将文件添加到在线编辑器后,代码运行良好。我很确定我的文件位置被正确引用了。