我有一个广泛使用Python (2.*风格)的项目,我想知道是否有终端菜单库或类似的东西?我希望通过使用箭头键突出显示的选项、一些颜色等简化一些选项来给我的脚本注入一些味道和活力。我隐约记得有一种方法可以制作bash shell终端菜单,但我完全不确定如何将用户输入从bash传递到python脚本,也许有一个bash终端菜单使用sysarggs推送脚本调用?如果可能的话,我想要一些蟒蛇的东西。有什么建议吗?
还有一个随机问题,既然我们在终端美学的主题上,那么处理计数器的最好方法是什么?我的脚本寻找图像文件,然后当它找到一个时,它用子进程调用清除终端,然后打印找到的总图像IE 10图像,找到一个,清除,打印“找到11个图像”,有时我的脚本运行得很快,我觉得这会影响性能。有什么想法?
非常感谢大家,我喜欢堆栈溢出;)
编辑-感谢所有的快速响应!我有很多选择要考虑。我给了每个人一张赞成票,因为你的所有回复都很有帮助。当我回到家时,我会检查所有的库,并试着从你们中挑选一个答案,这取决于什么是最好的,希望我可以选择你们所有人,因为你们所有的答案都是相关的!非常感谢各位。
编辑2-澄清计数器/进度显示,当我的脚本在很短的时间内找到数千张图像时,寻找一种方法来防止这一点损害性能,这是真正的拆分python……
for each item in list:
if item ends with .jpg
cnt=cnt+1
do stuff with image file
subprocess.call('clear')
print str(cnt)+" total images processed."再次感谢!
发布于 2012-12-04 00:06:13
有一个名为Urwid的库,它提供菜单等功能。我从来没有将它用于严肃的目的,但根据我对它的初步经验,它工作得很好。不过,它只能在Un*x系统上运行。(项目页面上说它可以在Cygwin下工作,但我从来没有试过。)
发布于 2012-12-04 00:37:01
查看Clint (*C*命令*L*ine *IN*ine *T*ools)!
https://github.com/kennethreitz/clint
示例颜色:
from clint.textui import colored
print 'I love ' + colored.yellow('pyt') + colored.blue('hon')也可以缩进:
from clint.textui import colored, indent, puts
with indent(3, quote=colored.red(' >')):
puts ('some random text')
puts ('another text')
with indent(3, quote=colored.green(' |')):
puts('some more nested identation')
puts('cool isn\'t?')同一位作者写了一个类似的很好的HTTP请求库,叫做"requests":https://github.com/kennethreitz/requests
发布于 2012-12-03 23:53:43
如果你想要更多的控制并且你在*nix上,你可以使用stdlib curses module。
如果你只想要一点颜色(/不想修改你的脚本来适应curses),你可以使用ANSI escape codes。例如:
print '\033[1;32mgreen\033[1;m'会把“绿色”这个词印成彩色的。绿色。
这是我用回车符设计的一个加载栏(基于this forum中的答案):
from time import sleep
import sys
num = 100
print 'Loading: [%s] %d%%' % (' '*(num/2), 0),
try:
colorCode = 43
for x in xrange(num+1):
if x == num: colorCode = 42
print '\rLoading: [\033[1;%dm%s\033[1;m%s] %d%%' % (colorCode, "|"*(x/2), " "*(num/2-x/2), x),
sys.stdout.flush()
sleep(0.02) # do actual stuff here instead
except KeyboardInterrupt:
print '\rLoading: [\033[1;41m%s\033[1;m%s] %d%% ' % ("|"*(x/2), " "*(num/2-x/2), x)输出示例:
Loading: [||||||||||||||||||||||||||||||||||||||||| ] 82%(虽然它没有显示在SO上,但它是彩色的-黄色表示加载,红色表示中止,绿色表示完成。)
https://stackoverflow.com/questions/13686781
复制相似问题