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

标签 python

我正在编写一些调用 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/

相关文章:

Python - 使用 Tidy 解析 HTML

python - 将 python 文件和 PyQt 转换为 Windows 可执行文件?

Python 列表 : Appending a string and removing ALL quotations

python - PyInt_FromLong 和 Py_BuildValue 之间的区别

python - Pandas:通过正则表达式在单列中提取不同的值

python - 我无法在 PyCharm 中导入 xml.dom.minidom。我可以尝试什么?

python - 如何在没有表单的情况下直接在django中将项目添加到数据库

python - 向所有 python 异常添加额外信息

python - 统计视频中的人数

python - 重击 : Python import - Command not found for pandas