我确信有更好的方法来编写下面的代码...下面是我当前代码遇到的问题,请提供您可能提供的任何输入
我想检查下面命令的stderr并根据错误消息重新运行它
错误消息看起来像“错误:无法删除您当前所在的分支”字母数字字符串“,我尝试匹配如下但遇到错误
import subprocess
def main():
change="205739"
proc = subprocess.Popen(['git', 'branch', '-d', change], stderr=subprocess.PIPE)
out, error = proc.communicate()
if error.startswith("error: Cannot delete the branch"):
subprocess.check_call(['git', 'branch', '-d', change])
if __name__ == '__main__':
main()
答案 0 :(得分:2)
你真的想避免使用shell=True
,而是将其拆分成一个列表,而你将不得不使用插值来启动。
要测试相等性,请使用==
; =
仅用于if
语句中不允许的分配。
如果您想检查.Popen()
输出,则需要使用stderr
:
import subprocess
def main():
change="205739"
proc = subprocess.Popen(['git', 'branch', '-d', change], stderr=subprocess.PIPE)
out, error = proc.communicate()
if error.startswith("error: Cannot delete the branch"):
subprocess.check_call(['git', 'branch', '-d', change])