我正在使用Python的子进程模块来运行dxl脚本。我的问题是,当我尝试捕获我的dxl脚本的输出(在此示例中为print语句或错误消息)时,它会在命令提示符中显示,但是当我尝试使用stdout=subprocess.PIPE
或subprocess.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
答案 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()
我觉得它适用于你的系统!