2014-07-15 7 views
1

python이 처음 사용되었습니다. 정의 된 함수와 인수를 사용하고 if/then 형식의 값을 반환하는 cmd를 사용하여 대화 형 셸에서 작업하고 있습니다. 아래 예. 하지만 내 문제는 사용자가 함수를 입력 할 때마다 사용자에게 무엇인가를 반환 할 때마다 Enter 키를 누르면 마지막으로 제공된 출력을 받는다는 것입니다.python 대화 형 셸 형식의 인수가없는 cmd 반복문 사용

아래 예제 코드에서 ...하지만 기본적으로 사용자가 인수 나 함수를 입력하지 않으면 그냥 아무 것도 표시되지 않거나 빈 공간 만 있으면됩니다. 나는 else pass 인수가 나를 위해 그것을했을 것이라고 생각했다. 그러나 분명히 그렇지 않았다. 나는 같은 결과로 if와 elif를 시도했다.

[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>** 

예제 코드 : "시험 ARP"와

예 출력, 그냥 리턴을 누르면 이전 인수 입력 타격! #을은/usr/빈/ENV 파이썬

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 (자기) : 패스 –

답변