从ESRI的ArcMap中运行python脚本,它使用子进程模块调用另一个python脚本(或至少尝试调用它)。然而,它在(DOS窗口)中执行的系统窗口只是非常短暂地出现,足以让我看到有一个错误,但是我太快离开了,实际读取它并查看错误是什么!
有没有人知道如何“暂停”DOS窗口或者可能使用python将其输出传递给文件或其他东西?
这是我的代码,它调用弹出DOS窗口并在其中出错的脚本:
py_path2 = “C:\ Python25 \ python.exe” py_script2 = “C:\数据下载\ PythonScripts \ DownloadAdministrative.py” subprocess.call([py_path2,py_script2])
非常感谢!
干杯
答案 0 :(得分:0)
尝试在脚本末尾执行raw_input()
命令(在Python 3中为input()
)。
这将暂停脚本并等待键盘输入。如果脚本引发异常,则需要捕获它然后发出命令。
此外,有一些方法可以读取命令的stdout和stderr流,尝试查看http://docs.python.org/library/subprocess.html处的subprocess.Popen参数。
答案 1 :(得分:0)
subprocess.call接受与Popen相同的参数。见http://docs.python.org/library/subprocess.html
我认为你对论证stderr
特别感兴趣。也许这样的事情会有所帮助:
err = fopen('logfile', 'w')
subprocess.call([py_path2, py_script2], stderr=err)
err.close()
如果您直接使用Popen,而不是在call
中将其包裹起来,则可以执行更多操作。