2014-07-15 54 views
1

python的新手和我正在使用cmd的交互式shell,它採用定義的函數和參數並以if/then格式返回值。下面的例子。但我的問題是,每當用戶輸入一個函數,並且我向用戶返回一些東西時,如果他們只是按下回車鍵,他們就會收到最後提供的輸出。python交互式shell使用cmd重複語句沒有鍵入參數

例如下面的代碼...但基本上如果用戶沒有輸入一個參數或函數的事情,我只想要什麼都不顯示只是一個「」或空的空間。我認爲其他通過論證會爲我做到這一點,但顯然不是。我試過如果和elif一樣,結果也一樣。

示例輸出以 「test ARP」,只需按下回車鍵返回按下前面的說法:

[email protected]>test arp 
? (192.168.50.1) at 0:26:88:38:c6:48 on en0 ifscope [ethernet] 
? (192.168.50.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet] 
> **<enter key>** 
? (192.168.50.1) at 0:26:88:38:c6:48 on en0 ifscope [ethernet] 
? (192.168.50.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet] 
> **<enter key>** 

示例代碼: #在/ usr /斌/包膜蟒蛇

from cmd import Cmd 
from time import ctime 
import csv, os, subprocess, getpass, socket, pwd, re, select, shutil, subprocess, sys 

syntaxError = "Sorry that syntax isn't quite right..." 

class cliPrompt(Cmd): 

    def do_test(self, args): 
     if len(args) == 0: 
      print syntaxError 
     if args == '?': 
      print 'want to read the help?' 
     if args == 'arp': 
      subprocess.call('arp -an', shell=True) 
     if args == 'cpu': 
      subprocess.call('grep "model name" /proc/cpuinfo', shell=True) 
     if args == 'firewall': 
      subprocess.call('iptables -L -v -n --line-numbers', shell=True) 
     if args == 'interfaces': 
      subprocess.call('ifconfig', shell=True) 
     else: 
      pass            

if __name__ == '__main__': 
    prompt = cliPrompt() 
    prompt.prompt = '>' 
    prompt.cmdloop() 
+0

geez通常有助於閱讀cmd模塊文檔。爲了勝利! def emptyline(self): pass –

回答

相關問題