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

  • 可以-缓存(-k)可以提高可靠性(如果
    空 yield )?
  • 是否可以捕获 -E- DOORS:在运行期间关闭窗口之前,无效的用户名或密码消息以及类似的错误消息,并在发生错误时从代码关闭批处理运行?

  • .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
    

    使用Doors 9.6,Python 3.6,Windows10

    最佳答案

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

    缓存比较棘手-这取决于您要执行的操作。我建议您尝试使用和不使用它,并查看您喜欢哪种行为。我不使用它,但是我的以批处理模式运行的应用程序往往是单向的(用户正在查看DOORS数据但未写入DOORS)

    关于python - 在批处理模式下运行IBM Doors时要检测错误的用户名和密码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59736472/

    10-12 20:26