簡體   English   中英

如何使用argparse為參數創建可選值?

[英]How to make an optional value for argument using argparse?

我正在創建一個python腳本,我希望有一個參數來操作你輸出的搜索結果數量。 我目前已將參數命名為--head 這是我希望它擁有的功能:

  1. --head沒有在命令行傳遞時,我希望它默認為一個值。 在這種情況下,一個相當大的,像80

  2. --head沒有任何值傳遞時,我希望它默認為另一個值。 在這種情況下,有限的東西,如10

  3. --head傳遞一個值時,我希望它存儲它傳遞的值。

以下是一些描述問題的代碼:

>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-h',
                        '--head',
                        dest='size',
                        const=80,
                        default=10,
                        action="I don't know",
                        help='Only print the head of the output')
>>> # OFC, that last line will fail because the action is uknown,
... # but here is how I'd like it to work
... parser.parse_args(''.split())
Namespace(size=80)
>>> parser.parse_args('--head'.split())
Namespace(size=10)
>>> parser.parse_args('--head 15'.split())
Namespace(size=15)

我知道我可能會為此編寫自定義操作,但我首先想看看是否有任何默認行為。

在文檔中nargs='?'我找到了我需要的東西: nargs='?' 這與store行為一起使用,完全符合我的要求。

這是一個例子:

>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--head',
                        dest='size',
                        const=10,
                        default=80,
                        action='store',
                        nargs='?',
                        type=int,
                        help='Only print the head of the output')
>>> parser.parse_args(''.split())
... Namespace(size=80)
>>> parser.parse_args('--head'.split())
... Namespace(size=10)
>>> parser.parse_args('--head 15'.split())
... Namespace(size=15)

資料來源: http//docs.python.org/3/library/argparse.html#nargs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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