【问题标题】:Running a python script from ArcMap从 ArcMap 运行 python 脚本
【发布时间】:2011-03-16 15:46:43
【问题描述】:

在 ESRI 的 ArcMap 中运行 python 脚本,并使用 subprocess 模块调用另一个 python 脚本(或至少尝试调用它)。但是,它在(DOS 窗口)中执行的系统窗口出现的时间非常短暂,足以让我看到有错误,但消失得太快,我无法真正阅读它并查看错误是什么!

有谁知道“暂停”DOS 窗口或可能将其输出到文件或使用 python 的其他东西的方法?

这是我的代码,它调用了弹出 DOS 窗口并在其中包含错误的脚本:

py_path2="C:\Python25\python.exe" py_script2="C:\DataDownload\PythonScripts\DownloadAdministrative.py" subprocess.call([py_path2, py_script2])

非常感谢!

干杯

【问题讨论】:

    标签: python esri


    【解决方案1】:

    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 中包装它。

    【讨论】:

      【解决方案2】:

      尝试在脚本末尾执行 raw_input() 命令(在 Python 3 中为 input())。 这将暂停脚本并等待键盘输入。如果脚本引发异常,您需要捕获它然后发出命令。

      此外,还有一些方法可以读取命令的 stdout 和 stderr 流,请尝试查看http://docs.python.org/library/subprocess.html 的 subprocess.Popen 参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-03
        • 1970-01-01
        • 1970-01-01
        • 2016-02-05
        相关资源
        最近更新 更多