如何在 Python 中创建文本文件寻呼机? [关闭]

Posted

技术标签:

【中文标题】如何在 Python 中创建文本文件寻呼机? [关闭]【英文标题】:How to create a text file pager in Python? [closed] 【发布时间】:2017-04-13 19:32:23 【问题描述】:

如何在 Python 中创建文本文件分页器? IE。程序的初级版本,例如 Unix 的 moreless 命令?

【问题讨论】:

我发布问题并自己回答有两个原因:1) 与他人共享代码,2) 以便其他人可以评论我的代码,帮助我改进它。另外,请参阅 *** 的联合创始人 Jeff Atwood 的这篇文章:***.blog/2011/07/01/… 你在 windows 和 linux 中有更多的东西,为什么要重新发明***? @yossico:我应该预料到这种问题,所以应该提前提到:这是为了学习目的,而不是为了重新发明***。看我的评论。我也要回答我的问题。 很高兴您帮助互联网变得更美好,+1 4u @yossico:谢谢。另一个好处是这些工具可以跨平台到任何运行 Python 的平台。无需安装 cygwin 或类似的。当然,我并不是想在这里复制less 或more 的全部功能——至少less 有很多——哈哈,双关语。这更像是一个演示,展示了寻呼机所涉及的核心概念 - 初学者的东西。 【参考方案1】:
'''
tp.py
Purpose: A simple text pager.
Version: 0.1
Platform: Windows-only.
Can be adapted for Unix using tty / termios calls.
Only the use of msvcrt.getch() needs to be changed.
Author: Vasudev Ram
Copyright 2017 Vasudev Ram
Web site: https://vasudevram.github.io
Blog: https://jugad2.blogspot.com
Product store: https://gumroad.com/vasudevram
'''

import sys
import string
from msvcrt import getch

def pager(in_fil=sys.stdin, lines_per_page=10, quit_key='q'):
    assert lines_per_page > 1 and lines_per_page == int(lines_per_page)
    assert len(quit_key) == 1 and \
        quit_key in (string.ascii_letters + string.digits)
    lin_ctr = 0
    for lin in in_fil:
        sys.stdout.write(lin)
        lin_ctr += 1
        if lin_ctr >= lines_per_page:
            c = getch().lower()
            if c == quit_key.lower():
                break
            else:
                lin_ctr = 0

def main():
    try:
        sa, lsa = sys.argv, len(sys.argv)
        if lsa == 1:
            pager()
        elif lsa == 2:
            with open(sa[1], "r") as in_fil:
                pager(in_fil)
        else:
            sys.stderr.write
            ("Only one input file allowed in this version")

    except IOError as ioe:
        sys.stderr.write("Caught IOError: ".format(repr(ioe)))
        sys.exit(1)

    except Exception as e:
        sys.stderr.write("Caught Exception: ".format(repr(e)))
        sys.exit(1)

if __name__ == '__main__':
    main()

更多细节在这里:

https://jugad2.blogspot.in/2017/02/tp-simple-text-pager-in-python.html

【讨论】:

@TadhgMcDonald-Jensen 不是取自 OP 自己的博客吗? @EJoshuaS 是的,它似乎是......好吧,我想我应该先寻找那个吧。 ? @TadhgMcDonald-Jensen:你标记不正确,而且太快了,没有检查来源。答案来自我自己的博客。我是 Vasudev Ram,jugad2.blogspot.com 是我的博客。

以上是关于如何在 Python 中创建文本文件寻呼机? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Maven 中创建校验和,然后将其输出到文本文件?

Python,如何在一个脚本中创建2个循环以便它可以工作

如何在目标 c ipad 应用程序中创建要写入的新文本文件

如何从带有额外分隔符的 csv 在 python 中创建 pandas 数据框?

如何读取文本文件(逐行)并使用输出作为 nameS 在 java 中创建 .pdf 文件?

在特定文件夹android中创建文本文件