如何使 argparse 在可执行程序中工作
How to make argparse work in executable program
我有一个使用 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(打开命令行工具)并让命令行等待我的命令(在本例中为 运行 或导出)。相反,它只是抛出错误并退出。
使用 cmd
module 创建一个 shell。
然后您可以使用 cmd.Cmd()
class 通过 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
命令自动提供。
只需使用 ./
到 运行 命令并使用通常的 argparse
输入,如下所示:
$ ./myfile -arg -arg
我有一个使用 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(打开命令行工具)并让命令行等待我的命令(在本例中为 运行 或导出)。相反,它只是抛出错误并退出。
使用 cmd
module 创建一个 shell。
然后您可以使用 cmd.Cmd()
class 通过 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
命令自动提供。
只需使用 ./
到 运行 命令并使用通常的 argparse
输入,如下所示:
$ ./myfile -arg -arg