<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Python `argparse`教程 > 原文: [http://zetcode.com/python/argparse/](http://zetcode.com/python/argparse/) Python `argparse`教程展示了如何使用`argparse`模塊解析 Python 中的命令行參數。 ## Python 的`argparse` 通過`argparse`模塊,可以輕松編寫用戶友好的命令行界面。 它解析`sys.argv`中定義的參數。 `argparse`模塊還會自動生成幫助和使用消息,并在用戶為程序提供無效參數時發出錯誤。 `argparse`是標準模塊; 我們不需要安裝它。 使用`ArgumentParser`創建一個解析器,并使用`add_argument()`添加一個新參數。 參數可以是可選的,必需的或定位的。 ## Python `argparse`可選參數 下面的示例創建一個簡單的參數解析器。 `optional_arg.py` ```py #!/usr/bin/env python import argparse # help flag provides flag help # store_true actions stores argument as True parser = argparse.ArgumentParser() parser.add_argument('-o', '--output', action='store_true', help="shows output") args = parser.parse_args() if args.output: print("This is some output") ``` 該示例添加了一個具有兩個選項的參數:短的`-o`和長的`--ouput`。 這些是可選參數。 ```py import argparse ``` 該模塊已導入。 ```py parser.add_argument('-o', '--output', action='store_true', help="shows output") ``` 參數添加了`add_argument()`。 如果設置為`store_true`,則`action`會將參數存儲為`True`。 help 選項提供參數幫助。 ```py args = parser.parse_args() ``` 參數由`parse_args()`解析。 解析的參數作為對象屬性存在。 在我們的例子中,將有`args.output`屬性。 ```py if args.output: print("This is some output") ``` 如果存在該參數,我們將顯示一些輸出。 ```py $ optional_arg.py -o This is some output $ optional_arg.py --output This is some output ``` 我們使用`-o`和`--output`運行程序。 ```py $ optional_arg.py --help usage: optional_arg.py [-h] [-o] optional arguments: -h, --help show this help message and exit -o, --output shows output ``` 我們可以向程序顯示幫助。 ## Python `argparse`必需參數 使用`required`選項需要一個參數。 `required_arg.py` ```py #!/usr/bin/env python import argparse # required arg parser = argparse.ArgumentParser() parser.add_argument('--name', required=True) args = parser.parse_args() print(f'Hello {args.name}') ``` 該示例必須指定`name`選項; 否則失敗。 ```py $ required_arg.py --name Peter Hello Peter $ required_arg.py usage: required_arg.py [-h] --name NAME required_arg.py: error: the following arguments are required: --name ``` 這是輸出。 ## Python `argparse`位置參數 以下示例適用于位置參數。 它們是使用`add_argument()`創建的。 `positional_arg.py` ```py #!/usr/bin/env python import argparse # positional args parser = argparse.ArgumentParser() parser.add_argument('name') parser.add_argument('age') args = parser.parse_args() print(f'{args.name} is {args.age} years old') ``` 該示例需要兩個位置參數:name 和 age。 ```py parser.add_argument('name') parser.add_argument('age') ``` 創建位置參數時不帶破折號前綴字符。 ```py $ positional_arg.py Peter 23 Peter is 23 years old ``` 這是示例輸出。 ## Python `argparse`目標 `add_argument()`的`dest`選項為參數指定名稱。 如果未給出,則從選項中推斷出來。 `dest.py` ```py #!/usr/bin/env python import argparse import datetime # dest gives a different name to a flag parser = argparse.ArgumentParser() parser.add_argument('-n', dest='now', action='store_true', help="shows now") args = parser.parse_args() # we can refer to the flag # by a new name if args.now: now = datetime.datetime.now() print(f"Now: {now}") ``` 程序將`now`名稱賦予`-n`參數。 ```py $ dest.py -n Now: 2019-03-22 17:37:40.406571 ``` 這是輸出。 ## Python `argparse`類型 `type`參數確定參數類型。 `rand_int.py` ```py #!/usr/bin/env python import argparse import random # type determines the type of the argument parser = argparse.ArgumentParser() parser.add_argument('-n', type=int, required=True, help="define the number of random integers") args = parser.parse_args() n = args.n for i in range(n): print(random.randint(-100, 100)) ``` 程序顯示從-100 到 100 的 n 個隨機整數。 ```py parser.add_argument('-n', type=int, required=True, help="define the number of random integers") ``` `-n`選項需要整數值,這是必需的。 ```py $ rand_int.py -n 3 92 -61 -61 ``` 這是一個示例輸出。 ## Python `argparse`默認 如果未指定`default`選項,則指定默認值。 `power.py` ```py #!/usr/bin/env python import argparse # required defines a mandatory argument # default defines a default value if not specified parser = argparse.ArgumentParser() parser.add_argument('-b', type=int, required=True, help="defines the base value") parser.add_argument('-e', type=int, default=2, help="defines the exponent value") args = parser.parse_args() val = 1 base = args.b exp = args.e for i in range(exp): val *= base print(val) ``` 該示例計算指數。 不需要指數值; 如果未給出,則默認值為 2。 ```py $ power.py -b 3 9 $ power.py -b 3 -e 3 27 ``` 這是輸出。 ## Python argparse metavar `metavar`選項為錯誤的期望值命名,并提供幫助輸出。 `metavar.py` ```py #!/usr/bin/env python import argparse # metavar gives name to the expected value # in error and help outputs parser = argparse.ArgumentParser() parser.add_argument('-v', type=int, required=True, metavar='value', help="computes cube for the given value") args = parser.parse_args() print(args) val = args.v print(val * val * val) ``` 該示例將期望值命名為`value`。 默認名稱為`V`。 ```py $ metavar.py -h usage: metavar.py [-h] -v value optional arguments: -h, --help show this help message and exit -v value computes cube for the given value ``` 給定的名稱顯示在幫助輸出中。 ## Python `argparse`附加操作 `append`操作允許對重復選項進行分組。 `appending.py` ```py #!/usr/bin/env python import argparse # append action allows to group repeating # options parser = argparse.ArgumentParser() parser.add_argument('-n', '--name', dest='names', action='append', help="provides names to greet") args = parser.parse_args() names = args.names for name in names: print(f'Hello {name}!') ``` 該示例生成問候語,并使用`n`或`name`選項指定所有名稱。 它們可以重復多次重復。 ```py $ appending.py -n Peter -n Lucy --name Jane Hello Peter! Hello Lucy! Hello Jane! ``` 這是輸出。 ## Python 的`argparse nargs` `nargs`指定應使用的命令行參數的數量。 `charseq.py` ```py #!/usr/bin/env python import argparse import sys # nargs sets the required number of argument values # metavar gives name to argument values in error and help output parser = argparse.ArgumentParser() parser.add_argument('chars', type=str, nargs=2, metavar='c', help='starting and ending character') args = parser.parse_args() try: v1 = ord(args.chars[0]) v2 = ord(args.chars[1]) except TypeError as e: print('Error: arguments must be characters') parser.print_help() sys.exit(1) if v1 > v2: print('first letter must precede the second in alphabet') parser.print_help() sys.exit(1) ``` 該示例顯示了從字符一到字符二的字符序列。 它需要兩個參數。 ```py parser.add_argument('chars', type=str, nargs=2, metavar='c', help='starting and ending character') ``` 使用`nargs=2`,我們指定期望兩個參數。 ```py $ charseq.py e k e f g h i j k ``` 程序顯示從`e`到`k`的字符序列。 可以使用`*`字符設置可變數量的參數。 `var_args.py` ```py #!/usr/bin/env python import argparse # * nargs expects 0 or more arguments parser = argparse.ArgumentParser() parser.add_argument('num', type=int, nargs='*') args = parser.parse_args() print(f"The sum of values is {sum(args.num)}") ``` 該示例計算值的總和。 我們可以為程序指定可變數量的參數。 ```py $ var_args.py 1 2 3 4 5 The sum of values is 15 ``` 這是輸出。 ## Python `argparse`選擇 `choices`選項將參數限制為給定列表。 `mytime.py` ```py #!/usr/bin/env python import argparse import datetime import time # choices limits argument values to the # given list parser = argparse.ArgumentParser() parser.add_argument('--now', dest='format', choices=['std', 'iso', 'unix', 'tz'], help="shows datetime in given format") args = parser.parse_args() fmt = args.format if fmt == 'std': print(datetime.date.today()) elif fmt == 'iso': print(datetime.datetime.now().isoformat()) elif fmt == 'unix': print(time.time()) elif fmt == 'tz': print(datetime.datetime.now(datetime.timezone.utc)) ``` 在示例中,`now`選項可以接受以下值:`std`,`iso`,`unix`或`tz`。 ```py $ mytime.py --now iso 2019-03-27T11:34:54.106643 $ mytime.py --now unix 1553682898.422863 ``` 這是一個示例輸出。 ## 頭例子 以下示例模仿 Linux `head`命令。 它顯示了文件開頭的 n 行文本。 `words.txt` ```py sky top forest wood lake wood ``` 對于示例,我們有這個小的測試文件。 `head.py` ```py #!/usr/bin/env python import argparse from pathlib import Path # head command # working with positional arguments parser = argparse.ArgumentParser() parser.add_argument('f', type=str, help='file name') parser.add_argument('n', type=int, help='show n lines from the top') args = parser.parse_args() filename = args.f lines = Path(filename).read_text().splitlines() for line in lines[:args.n]: print(line) ``` 該示例有兩個選項:`f`表示文件名,`-n`表示要顯示的行數。 ```py $ head.py words.txt 3 sky top forest ``` 這是輸出。 這是 Python `argparse`教程。 您可能也對 [Python `pathlib`教程](/python/pathlib/)和 [Python 教程](/lang/python/)感興趣。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看