2016-09-19 2 views
1

argparse 모듈을 사용하는 프로그램 명령 줄이 있습니다. 명령 줄 > python myfile.py run 등에서 실행할 때실행 파일에서 argparse를 만드는 방법

import argparse 

def run(): 
    print 'Running' 

def export(): 
    print 'Exporting' 

def argument_parser(): 
    parser = argparse.ArgumentParser() 
    parser.add_argument('run', action='store_true') 
    parser.add_argument('export', action='store_true') 
    return parser.parse_args() 

args = argument_parser() 
if args.run: 
    run() 
else: 
    export() 

는 지금은 잘 작동

그러나 나는 그것에서 실행을했습니다 그리고 내가 메인 .exe 파일을 열면 내가이 too few arguments 오류가 발생했습니다 pyinstaller를 사용하여 꽤 논리적이다. 하지만 난 (두 번 클릭) comman 라인 도구를 여는 main.exe()를 열고 내 명령 (이 경우에는 실행 또는 내보내기)을 기다릴 수 싶어요. 대신 단지 오류를 던지고 종료합니다.

+0

안녕하세요, 로저스, 당신이 원하는 것을 잘 이해하지 못합니다 – Cesar

+0

실행 파일을 열면 오류가 너무 적어서 아무 것도 입력하지 않아도됩니다! –

+0

"듣기"를 정의 할 수 있습니까? – SethMMorton

답변

1

cmd module을 사용하여 셸을 만듭니다.

그런 다음 cmd.Cmd() 클래스를 사용하여 cmd.Cmd().onecmd() method을 통해 단일 명령을 실행할 수 있습니다. 공백 접합은 sys.argv 명령 라인에 전달한다

from cmd import Cmd 
import sys 

class YourCmdSubclass(Cmd): 
    def do_run(*args): 
     """Help text for run""" 
     print('Running') 

    def do_export(*args): 
     """Help text for export""" 
     print('Exporting') 

    def do_exit(*args): 
     return -1 


if __name__ == '__main__': 
    c = YourCmdSubclass() 
    command = ' '.join(sys.argv[1:]) 
    if command: 
     sys.exit(c.onecmd(command)) 
    c.cmdloop() 

도움말 자동 help 명령에 의해 제공된다.

+0

당신은 그것을 접합 할 수 있습니까? –

+0

그리고이 코드에'argument_parser()'를 어디에 넣어야합니까? –

+0

@rojas :'argument_parser'를 모두 삭제하십시오. 'Cmd' 클래스가 그것을 대체합니다. –

관련 문제