【发布时间】:2015-10-07 13:42:24
【问题描述】:
我正在使用 Python 的 subprocess 模块来运行 dxl 脚本。我的问题是当我尝试捕获我的 dxl 脚本的输出(在此示例中为打印语句或错误消息)时,它显示在命令提示符中,但是当我尝试使用 stdout=subprocess.PIPE 或 @987654323 捕获它时@ 它总是返回一个空字符串。有没有办法捕获输出或者我如何从 Doors 获取错误消息?
重要的是不要看到 DOORS 的 GUI。
这是我的问题的简单示例:
test.dxl
print "Hello World"
test.py
import subprocess
doorsPath = "C:\\Program Files (x86)\\IBM\\Rational\\DOORS\\9.5\\bin\\doors.exe"
userInfo = ' -user dude -password 1234 -d 127.0.0.1 -batch ".\\test.dxl"'
dxl = " -W"
output = subprocess.check_output(doorsPath+dxl+userInfo)
print(output)
编辑:使用 Windows 7、DOORS 9.5 和 Python 2.7
【问题讨论】:
-
如果您在 Windows 控制台中运行相同的命令但使用重定向(在命令末尾附加
> output.txt)会发生什么?你在文件中看到结果了吗?不相关:对 Windows 路径使用原始字符串文字,例如r'C:\Program..'(以避免转义反斜杠)。 -
感谢原始字符串提示,明天我回来工作时会在 Windows 控制台上试用它。
-
@J.F.Sebastian 所以我试了一下,它创建了一个带有“Hello World”消息的命令提示符和一个空的 output.txt 文件:(
-
如果
doors.exeprints directly to Windows console outside its stdout, stderr 然后看看是否有一个命令行开关可以将输出重定向到更容易访问的地方(比如文件),否则你可能需要模拟Windows控制台(有伪-tty 在 UNIX 上,但在 Windows 上完全不同)。 -
More 解决了将数据打印到文件并使用 python 读取的问题。但仍然解决了它,非常感谢@J.F.Sebastian :)
标签: python subprocess ibm-doors