python - 想要在批处理模式下运行 IBM Doors 时检测不正确的用户名和/或密码
问题描述
我正在使用 Python 子流程通过 DXL 脚本和外部变量以批处理模式启动 IBM Doors。当我运行脚本时,它通常运行良好,但有时返回值为空。当我故意提供不正确的用户凭据时,会出现其他问题。Doors 打开一个窗口,我想通过代码关闭它并写出错误,但是只有在手动关闭窗口后才会出现错误。我使用了一个临时目录进行导出,我从 Python 检查过,当更新发生时我处理了它,但从 std out 读取似乎是一个更好的解决方案。
- -caching (-k)可以提高可靠性(在空返回的情况下)吗?
- 是否可以在关闭窗口之前在运行期间捕获-E- DOORS: Invalid username or password Massage 和类似的错误消息,并在出现错误时从代码中关闭批处理运行?
.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
解决方案
我建议将“-W”开关添加到您的命令行语句中。这可以在此处的“nowait”下找到。确保你大写W!
缓存比较棘手——这取决于你想要做什么。我建议在有无的情况下尝试一下,看看你喜欢哪种行为。我不使用它,但我在批处理模式下运行的应用程序往往是单向的(用户正在查看 DOORS 数据但没有写入 DOORS)
推荐阅读
- ruby-on-rails - 删除关系后,Rails 不会清理多态 _type 字段
- javascript - 如何在反应中收听引导模式关闭事件
- opencl - OpenCL 在每次内核执行后递增整数
- angular - Cdk 虚拟滚动问题
- user-interface - 赛普拉斯:对 UI 元素是否存在进行条件测试的最佳实践
- dynamics-crm - Dynamics CRM 中的搜索功能
- php - php中的多步表单
- kubernetes - Kops 暂停集群应该使 EC2 实例集群处于停止状态
- design-patterns - 如何拥有特质的私密部分?
- sql - 如何转到下一个或上一个记录