我的记录表应用程序有一个菜单选项,用于创建新的空白记录表。当我打开一个工作表窗口时,我可以毫无问题地打开新窗口,使用subprocess.Popen()来完成它。
但是,在Windows下(我尚未在其他操作系统上测试过),如果我打开一个新窗口,然后使用“打开文件”对话框用文件中的数据填充字段,我不再能够创建新窗口。一旦填充,Windows就会给我
'foo.py'未被识别为内部或外部命令,可操作 程序或批处理文件。
我不明白什么会导致Windows突然无法识别Popen()调用。我没有任何会以我所知的方式影响它的代码。
答案 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文件。