如何在 Python 中创建文本文件寻呼机? [关闭]
Posted
技术标签:
【中文标题】如何在 Python 中创建文本文件寻呼机? [关闭]【英文标题】:How to create a text file pager in Python? [closed] 【发布时间】:2017-04-13 19:32:23 【问题描述】:如何在 Python 中创建文本文件分页器? IE。程序的初级版本,例如 Unix 的 more 或 less 命令?
【问题讨论】:
我发布问题并自己回答有两个原因: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 中创建文本文件寻呼机? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何从带有额外分隔符的 csv 在 python 中创建 pandas 数据框?