首页 > 解决方案 > 想要在批处理模式下运行 IBM Doors 时检测不正确的用户名和/或密码

问题描述

我正在使用 Python 子流程通过 DXL 脚本和外部变量以批处理模式启动 IBM Doors。当我运行脚本时,它通常运行良好,但有时返回值为空。当我故意提供不正确的用户凭据时,会出现其他问题。Doors 打开一个窗口,我想通过代码关闭它并写出错误,但是只有在手动关闭窗口后才会出现错误。我使用了一个临时目录进行导出,我从 Python 检查过,当更新发生时我处理了它,但从 std out 读取似乎是一个更好的解决方案。


.py

import subprocess
import os

if __name__ == '__main__':
  script_name = 'demo_dummy_script.dxl'
  filename = os.path.join(os.path.dirname(os.path.realpath('__file__')), script_name)

  var = "apple"
  proc = subprocess.Popen(r'"C:\Program Files\IBM\Rational\DOORS\bin\doors.exe"'
                           r' -dxl "string myVar = \"'
                           + var +
                           r'\"" -b '
                           + filename +
                           r' -osuser',
                           stdout=subprocess.PIPE,
                          stderr=subprocess.STDOUT)
  stdout = proc.communicate()
  encoding = 'utf-8'
  print(stdout[0].decode(encoding).split())

.dxl

cout << myVar

使用门 9.6、Python 3.6、Windows10

标签: pythonerror-handlingsubprocessibm-doors

解决方案


我建议将“-W”开关添加到您的命令行语句中。这可以在此处的“nowait”下找到。确保你大写W!

缓存比较棘手——这取决于你想要做什么。我建议在有无的情况下尝试一下,看看你喜欢哪种行为。我不使用它,但我在批处理模式下运行的应用程序往往是单向的(用户正在查看 DOORS 数据但没有写入 DOORS)


推荐阅读