gpt4 book ai didi

python - 使用 python 的子进程处理寻呼机

转载 作者:行者123 更新时间:2023-12-01 03:24:48 24 4
gpt4 key购买 nike

我正在编写一些调用 git 命令的脚本,但是当 git 尝试使用寻呼机输出时遇到问题,这会阻止用户输入。例如,以下内容让我陷入less(据我所知),我必须q才能继续:

subprocess.Popen(['git', 'diff', '--stat', '--cached', 'origin/master']).wait()

在这种特定情况下,我可以通过告诉 git 不要使用寻呼机来禁用它:

subprocess.Popen(['git', '--no-pager', 'diff', '--stat', '--cached', 'origin/master']).wait()

是否有一些通用的解决方案(编辑:即适用于所有内容,而不仅仅是git),我可以在其中捕获输出而不是在寻呼机上阻塞,或者是否有某种机制可以通知子进程(在本例中为 git)不要自动使用寻呼机?

我尝试关闭子进程的标准输入并尝试使用 shell=True/False 参数,但都没有帮助。

<小时/>

更新:
例如,如果输出比一页长,git diff --stat --cached origin/master 将使您进入寻呼机。 git diff --stat --cached origin/master | git diff --stat --cached origin/master | git diff --stat --cached origin/master |猫不会。 git 是怎么知道的?如何使用子进程应用相同的效果?

最佳答案

gitPAGER 环境变量敏感,以下效果很好:

subprocess.Popen(['git', 'diff', '--stat', '--cached', 'origin/master'], env={'PAGER':'cat'}).wait()

关于python - 使用 python 的子进程处理寻呼机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41493995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com