簡體   English   中英

如何使 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> 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM