需要向下面的Python 3脚本添加什么特定语法,以便脚本过滤每一行结果并评估是否有任何输出行包含特定的子字符串?
下面是成功运行git clone
命令的代码:
newpath="C:\\path\\to\\destination\\"
cloneCommand='git clone https://github.com/someuser/somerepo.git'
proc = subprocess.check_call(cloneCommand, stdout=subprocess.PIPE, shell=True, cwd=newpath, timeout=None)
字符串
上面的代码成功克隆了预期的存储库。但问题是没有错误处理。
我希望脚本能够在输出的每一行中监听单词deltas
和done
,以便在输出中打印以下行时指示成功:
Resolving deltas: 100% (164/164), done.
型subprocess.Popen(...)
允许我们过滤流输出的每一行。但是,当我们运行像git clone
这样的远程命令时,subprocess.Popen(...)
不起作用,因为subprocess.Popen(...)
不会等待接收像git clone
这样的远程调用的返回。
我们需要使用什么语法来过滤subprocess.check_call(...)
调用的输出?
1条答案
按热度按时间tvz2xvvm1#
一个小脚本,我们可以执行它来测试
Popen
代码。它在退出之前生成一些STDOUT和STDERR,然后选择一个我们选择的代码,可选地带有一些延迟:字符串
演示如何使用
Popen
的脚本。这个脚本的参数将是我们要执行的外部命令。型
如果第一个脚本被称为
other_program.py
,而这个脚本被称为demo.py
,你可以沿着以下代码运行整个脚本:型
git clone
的用法示例,如在注解中与OP讨论的:型