2016-09-19 43 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'类替换它。 –

相关问题