为什么只有当窗口填充时才会发生“command not recognized”错误?

我的logging表应用程序具有用于创build新的空白logging表的菜单选项。 当我打开工作表窗口,我可以打开新的窗口没有问题,使用subprocess.Popen()来做到这一点。

但是,在Windows下(我还没有在其他操作系统上testing过),如果我打开一个新窗口,然后使用“打开文件”对话框填充文件中的数据字段,我不能再创build新的视窗。 一旦它被填充,Windows给了我

“foo.py”不被识别为内部或外部命令,可操作程序或batch file。

我不明白什么会导致Windows突然不认识到Popen()调用。 我没有任何代码会影响到我所知道的任何方式。

Solutions Collecting From Web of "为什么只有当窗口填充时才会发生“command not recognized”错误?"

从错误信息看来,您需要将“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']) 

建议的答案似乎已经解决了这个问题。 我也意识到,我需要使用os.name来确定正在使用的操作系统,然后我可以使用正确的路径格式来加载外部的Python文件。