为什么仅在窗口填充时会出现“命令未识别”错误?
我的记录表应用程序有一个菜单选项,可以创建一个新的空白记录表。当我打开一个表格窗口时,我可以顺利地打开新的窗口,使用subprocess.Popen()来实现。
但是,在Windows系统下(我还没有在其他操作系统上测试过),如果我打开一个新窗口,然后使用“打开文件”对话框从文件中填充数据到字段里,之后我就无法再创建新的窗口了。一旦填充完数据,Windows就会给我提示:
'foo.py' 不是内部或外部命令,也不是可运行的程序或批处理文件。
我不明白为什么Windows会突然不识别Popen()这个调用。我没有任何代码会影响到它,至少我自己是这么认为的。
2 个回答
0
推荐的答案似乎解决了这个问题。我还意识到我需要使用 os.name 来判断正在使用哪个操作系统,然后我就可以用正确的路径格式来加载外部的Python文件。
4
从错误信息来看,你需要把“foo.py”的完整路径传给你的Popen调用。通常只写“foo.py”会在你当前的工作目录里查找这个文件,但在Windows上,这有时候会有点不稳定。我发现你的程序在打开文件对话框时似乎有点乱。
其次,为了保险起见,你应该把foo.py作为参数传给python.exe这个可执行文件,而不是直接执行foo.py本身。同样,我建议你用路径来指定这个文件。
所以为了安全起见,可以这样做:
subprocess.Popen([r'C:\Python2.5\python.exe', r'C:\path\to\foo.py'])