我有一个使用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(打开命令行工具)并让命令行等待我的命令(在这种情况下运行或导出)。相反,它只会抛出错误并退出。
答案 0 :(得分: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
命令会自动提供帮助。
答案 1 :(得分:0)
只需使用./
来运行命令并使用常规的argparse
输入,如下所示:
$ ./myfile -arg -arg