2015-01-06 21 views
0

我正在編寫一個Python腳本,從Ubuntu終端運行,它以某種格式接受命令併爲我執行任務。這意味着腳本打印「>」並讀取命令,執行它,然後返回到開頭。我想要一個實現一個按下向上箭頭導致前面的命令出現在我的命令行上的功能,類似於bash命令行。我怎樣才能實現這個?Python程序:如何從終端獲取按鍵?

+0

有人可以暗示爲什麼我的帖子被降低了嗎?我不知道我可能會破壞的任何規則。 – user1299784

回答

0

除了由巴西萊Starynkevitch提到rl模塊結合,有標準的模塊readline。如果導入readline到腳本自動爲您在線編輯&歷史,當你在Python 2或input()在Python 3

使用input()raw_input()下面是做Caesar encryption一個快速的Python 2演示程序。

#! /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()