gpt4 book ai didi

python - python的分页输出

转载 作者:IT老高 更新时间:2023-10-28 20:44:31 27 4
gpt4 key购买 nike

我正在尝试实现类似于 git log 的东西,它只会在日志具有一定长度时分页输出。如果你不熟悉 git,我实际上是在尝试实现这一点:

python some_script.py | less

在 python2.6/pydoc.py 中的分页实现的帮助下,我能够想出这个:

import os
text = '...some text...'
pipe = os.popen('less', 'w')
pipe.write(text)
pipe.close()

效果很好,但不推荐使用 os.popen() 。我考虑过写入临时文件并使用其路径调用 less,但这似乎并不理想。这可能与子流程有关吗?还有其他想法吗?

编辑:

所以我已经让子流程工作了。我可以用 Popen.communicate(text) 给它文本变量,但是因为我真的想重定向打印语句,所以我决定这样做:

  import os, sys, subprocess, tempfile

page = True
if page:
path = tempfile.mkstemp()[1]
tmp_file = open(path, 'a')
sys.stdout = tmp_file
print '...some text...'
if page:
tmp_file.flush()
tmp_file.close()
p = subprocess.Popen(['less', path], stdin=subprocess.PIPE)
p.communicate()
sys.stdout = sys.__stdout__

当然,我最终会将它包装成函数。有没有人觉得这有问题?

最佳答案

这个怎么样:

import pydoc
text = '... some text ... '
pydoc.pager(text)

这(在我的 opensuse linux 机器上)将文本发送到寻呼机(在我的情况下为“less”),其工作方式与在 Python 解释器中调用“help(... python command...)”相同。

关于python - python的分页输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6728661/

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