为什么只有在填充窗口时才会出现“命令无法识别”错误?

时间:2008-11-12 09:38:53

标签: python windows

我的记录表应用程序有一个菜单选项,用于创建新的空白记录表。当我打开一个工作表窗口时,我可以毫无问题地打开新窗口,使用subprocess.Popen()来完成它。

但是,在Windows下(我尚未在其他操作系统上测试过),如果我打开一个新窗口,然后使用“打开文件”对话框用文件中的数据填充字段,我不再能够创建新窗口。一旦填充,Windows就会给我

  

'foo.py'未被识别为内部或外部命令,可操作   程序或批处理文件。

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

2 个答案:

答案 0 :(得分: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'])

答案 1 :(得分:0)

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