我有一个使用 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
模块 创建 shell。
然后您可以使用您创建的
cmd.Cmd()
类通过 cmd.Cmd().onecmd()
方法运行单个命令;传入 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
sys.argv
,例如:# Created By [email protected] at 2023-12-23 09:41:29+0800
import argparse
import sys
try:
argparse.ArgumentParser()
except Exception as e:
print("Exception:", e)
else:
print("No exception, it worked!")
if len(sys.argv) == 0:
sys.argv.append(sys.executable)
try:
argparse.ArgumentParser()
except Exception as e:
print("Exception:", e)
else:
print("No exception, it worked!")