子进程不会获取dxl脚本的输出

时间:2015-10-07 13:42:24

标签: python subprocess ibm-doors

我正在使用Python的子进程模块来运行dxl脚本。我的问题是,当我尝试捕获我的dxl脚本的输出(在此示例中为print语句或错误消息)时,它会在命令提示符中显示,但是当我尝试使用stdout=subprocess.PIPEsubprocess.check_output它总是返回一个空字符串。有没有办法捕获输出或如何从门获取错误消息? 重要的是你没有看到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

3 个答案:

答案 0 :(得分:0)

我知道这篇文章很老了,但问题的解决方法是使用 cout<< ......而不是打印。您可以覆盖此处所示的打印权限 DOORS Print Redirect Tutorial for print, cout and logfiles

答案 1 :(得分:0)

我在这里很幸运

print "Hello World"更改为cout << "Hello World"

userInfo = ' -user dude -password 1234 -d 127.0.0.1 -batch ".\\test.dxl > D:\output.txt"',如cmd promt中一样,文本可以直接导出到文本文件。

答案 2 :(得分:-1)

您的脚本有很多错误尝试此link,例如子进程

试试这个:

import subprocess
import sys

path = "C:\\Program Files(x86)\\IBM\\Rational\\DOORS\\9.5\\bin\\doors.exe"
userInfo = "C:\\Program Files (x86)\\IBM\\Rational\\DOORS\\9.5\\bin\\doors.exe"

proc = subprocess.Popen([path,userInfo,"-W"])
proc.communicate()

我觉得它适用于你的系统!