【发布时间】:2012-12-08 07:45:23
【问题描述】:
我正在通过 Python 的子进程模块运行命令行实用程序。我使用命令行参数和 stdout=subprocess.PIPE 创建了一个 subprocess.Popen() 对象,然后我使用 subprocess.wait() 等待任务完成并返回应该指示任务是否成功完成的返回码.
translate = subprocess.Popen(['gdal_translate', '-of', 'HFA', 'inDataset', 'outDataset'], stdout=subprocess.PIPE)
if translate.wait() == 0: print "Success"
else: print "Fail - %s" % translate.stdout.read()
如果我在 windows 命令提示符下运行我的脚本,我可以看到 gdal_translate 提供的消息,他们说有错误导致进程失败,但我的脚本仍然打印“成功”。
如果返回码始终为 0,我如何检查命令行实用程序报告的错误?
【问题讨论】:
-
如果直接在终端运行命令,它的退出码是什么?
-
如何在终端中查看退出代码?这是我收到的错误消息的示例:
ERROR 1: path\to\dataset, band 1: IReadBlock failed at X offset 100, Y offset 331 -
在 Windows 上?
echo %errorlevel%,我想。在 bash 中,它将是echo $?。
标签: python command-line error-handling subprocess return-value