0

我确定有更好的方法来编写以下代码...以下是我当前代码遇到的问题,请提供您可能有的任何输入

  1. 我想检查以下命令的标准错误并根据错误消息重新运行它

  2. 错误消息看起来像“错误:无法删除您当前所在的分支“字母数字字符串”,我正在尝试如下匹配但遇到错误

    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()
    
4

1 回答 1

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])
于 2012-12-28T21:11:31.917 回答