2016-09-19 47 views
1

我有一個使用argparse模塊的程序命令行。如何在可執行程序中進行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() 

現在從命令行> python myfile.py run等運行時,它工作得很好

但是使用pyinstaller我用它製成的可執行文件,如果我打開MAIN.EXE文件我too few arguments錯誤是很合乎邏輯。但我想打開(雙擊)main.exe(打開comman line工具)並讓命令行等待我的命令(在這種情況下運行或導出)。相反,它只是拋出錯誤並退出。

+0

嗨羅哈斯,我不明白你想達到什麼 – Cesar

+0

當我打開可執行文件時,它會拋出錯誤太少的參數我什至沒有改變輸入任何東西! –

+0

你可以定義「聽」嗎? – SethMMorton

回答

1

使用cmd module來創建一個shell。

然後,您可以使用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

你能夠peusocode它嗎? –

+0

我在哪裏適合'argument_parser()'這個代碼? –

+0

@rojas:完全刪除'argument_parser'。 'Cmd'類替換它。 –

相關問題