我正在编写一个Python脚本,从Ubuntu终端运行,它以某种格式接收命令并为我完成任务。这意味着脚本打印"> "并读取命令,执行它,然后返回到开头。我想要一个实现一个功能,其中按向上箭头导致上一个命令出现在我的命令行上,类似于bash命令行。我该如何实现呢?
答案 0 :(得分:0)
它被称为历史。你可能应该找到像GNU readline
这样的rl绑定答案 1 :(得分:0)
除了Basile Starynkevitch提到的rl模块外,还有标准模块readline。如果您将readline
导入到脚本中,则会自动进行行编辑&在Python 2中使用input()
或raw_input()
或在Python 3中使用input()
时的历史记录。
这是一个快速的Python 2演示程序,它执行Caesar encryption。
#! /usr/bin/env python
''' Simple Caesar encryption / decryption of stdio
Gets shift from command line; default is ROT13
Written by PM 2Ring 2012.12.01
'''
import sys, readline
lobase = ord('a')
hibase = ord('A')
def rot(c, delta):
if c.isalpha():
base = lobase if c.islower() else hibase
c = chr(base + (ord(c) - base + delta) % 26)
return c
def main():
delta = int(sys.argv[1]) if len(sys.argv) > 1 else 13
while True:
try:
s = raw_input()
print ''.join(rot(c, delta) for c in s)
except EOFError:
break
if __name__ == '__main__':
main()