[英]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
等> python myfile.py run
時它工作得很好。
但是,使用pyinstaller
我已經pyinstaller
了一個可執行文件,如果我打開 main.exe 文件,我得到的too few arguments
錯誤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
命令會自動提供help
。
只需使用./
運行命令並使用通常的argparse
輸入,如下所示:
$ ./myfile -arg -arg
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.