你可以看看http://docs.python.org/library/cmd.html。
示例代碼:
import cmd
import sys
class Prompt(cmd.Cmd):
def __init__(self, stufflist=[]):
cmd.Cmd.__init__(self)
self.prompt = '>>> '
self.stufflist = stufflist
print "Hello, I am your new commandline prompt! 'help' yourself!"
def do_quit(self, arg):
sys.exit(0)
def do_print_stuff(self, arg):
for s in self.stufflist:
print s
p = Prompt(sys.argv[1:])
p.cmdloop()
試驗例:
$ python cmdtest.py foo bar
Hello, I am your new commandline prompt! 'help' yourself!
>>> help
Undocumented commands:
======================
help print_stuff quit
>>> print_stuff
foo
bar
>>> quit
爲了輸出保存到一個文件,你可以寫的東西通常會也到標準輸出到文件使用例如這個類:
class Tee(object):
def __init__(self, out1, out2):
self.out1 = out1
self.out2 = out2
def write(self, s):
self.out1.write(s)
self.out2.write(s)
def flush(self):
self.out1.flush()
self.out2.flush()
您可以使用它像這樣:
with open('cmdtest.out', 'w') as f:
# write stdout to file and stdout
t = Tee(f, sys.stdout)
sys.stdout = t
的一個問題是,通過命令標準輸入讀取中不會出現在這個輸出,但我相信這是可以迎刃而解。
我試過Popen,但無法有效地運行終端客戶端。我也無法使用communic()發送多個輸入。當我使用stdin = PIPE,然後使用stdin.read發送數據時,客戶端很怪異 – confused1