当前位置: 首页 > 面试题库 >

从python分页输出

董永宁
2023-03-14
问题内容

我正在尝试实现类似于的功能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()。我已经考虑过写入一个临时文件并减少其路径调用,但这似乎并不理想。子流程有可能吗?还有其他想法吗?

编辑:

所以我已经使子流程工作了。我可以使用来给它文本变量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__

当然,我最终将其包装为函数。有人看到这个问题吗?


问题答案:

使用subprocess.Popen代替。

http://docs.python.org/library/subprocess.html#subprocess-
replacements

http://docs.python.org/library/subprocess.html#subprocess.Popen

os.popen文档中甚至对此有一个注释。

http://docs.python.org/library/os.html#os.popen



 类似资料:
  • 本文向大家介绍python实现分页效果,包括了python实现分页效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现分页效果展示的具体代码,供大家参考,具体内容如下 难点:清空Layout  效果图: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 在Linux上,命令ps aux输出每个统计信息具有多个列的进程列表。例如 我希望能够使用Python进行阅读,然后将每一行然后每一列分开,以便可以将它们用作值。 在大多数情况下,这不是问题: 我现在可以遍历流程以获取每一行并将其按空格分开,例如 但是,问题在于命令的最后一列有时在其中有空格。在上面的示例中,可以在命令中看到 将被拆分为 但我真的希望它是: 所以我的问题是,我该如何拆分

  • 我有一个Arduino与2个DS18B20温度传感器连接。我对python非常(非常)陌生。我正在寻找一种读取串行输入并将其解析到sqlite数据库的方法,但这已经超出了我的能力。为什么在尝试将串行端口定义为变量时出错? 首先<代码>sys.version 我的当前,只是读取串行连接程序的输入。 我目前无法编译它。我发现这个错误的大多数结果告诉添加,但在这种情况下,它不起作用。 错误。 另外,如果

  • 这里有个问题。我有这个Python脚本,它检查大型数据集的电子邮件并提取它们。在我的mac上,它只显示终端中的所有电子邮件地址。有时文件是1-2演出,所以它可能需要一点,输出是疯狂的。我想知道在Python中,把它保存到一个文件中而不是在终端中打印出来有多容易。 我甚至不需要看到所有的东西都被扔进候机楼。 这是我正在使用的脚本

  • 本文向大家介绍python实现将内容分行输出,包括了python实现将内容分行输出的使用技巧和注意事项,需要的朋友参考一下 #python版一行内容分行输出   再给大家一个读取文件内容并分行输出的方法 好了,小伙伴们自己好好研究下吧,很有意思。

  • 问题内容: 我正在编写的API大约有2000条记录,通过我编写的简单RESTful API以JSON返回。 为了减少大量数据的问题,我想使用分页,以便仅通过诸如or 或等返回每个请求的前10个或前20个。 但是我的问题是,iOS如何知道何时获得下一页结果? 我真的不确定如何执行此操作。用户可能正在快速滚动,因此API可能没有足够的时间一次检索20或50条记录。 与此相关的另一个问题是,假设用户在U