新聞中心
使用 argparse 模塊像專業(yè)人士一樣解析參數(shù)。

從策劃到設計制作,每一步都追求做到細膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供網(wǎng)站制作、成都網(wǎng)站建設、網(wǎng)站策劃、網(wǎng)頁設計、域名與空間、虛擬主機、網(wǎng)絡營銷、VI設計、 網(wǎng)站改版、漏洞修補等服務。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進步。
如果你在使用 Python 進行開發(fā),你可能會在終端中使用命令,即使只是為了啟動 Python 腳本或使用 pip 安裝 Python 模塊。命令可能簡單而單一:
$ ls
命令也可能需要參數(shù):
$ ls example
命令也可以有選項或標志:
$ ls --color example
有時選項也有參數(shù):
$ sudo firewall-cmd --list-all --zone home
參數(shù)
POSIX shell 會自動將你輸入的內(nèi)容作為命令分成數(shù)組。例如,這是一個簡單的命令:
$ ls example
命令 ls 的位置是 $0,參數(shù) example 位置是 $1。
你可以寫一個循環(huán)迭代每項。確定它是否是命令、選項還是參數(shù)。并據(jù)此采取行動。幸運的是,已經(jīng)有一個名為 argparse 的模塊。
argparse
argparse 模塊很容易集成到 Python 程序中,并有多種便利功能。例如,如果你的用戶更改選項的順序或使用一個不帶參數(shù)的選項(稱為布爾,意味著選項可以打開或關閉設置),然后另一個需要參數(shù)(例如 --color red),argparse 可以處理多種情況。如果你的用戶忘記了所需的選項,那么 argparse 模塊可以提供友好的錯誤消息。
要在應用中使用 argparse,首先要定義為用戶提供的選項。你可以接受幾種不同的參數(shù),而語法一致又簡單。
這是一個簡單的例子:
#!/usr/bin/env pythonimport argparseimport sysdef getOptions(args=sys.argv[1:]):parser = argparse.ArgumentParser(description="Parses command.")parser.add_argument("-i", "--input", help="Your input file.")parser.add_argument("-o", "--output", help="Your destination output file.")parser.add_argument("-n", "--number", type=int, help="A number.")parser.add_argument("-v", "--verbose",dest='verbose',action='store_true', help="Verbose mode.")options = parser.parse_args(args)return options
此示例代碼創(chuàng)建一個名為 getOptions 的函數(shù),并告訴 Python 查看每個可能的參數(shù),前面有一些可識別的字符串(例如 --input 或者 -i)。 Python 找到的任何選項都將作為 options 對象從函數(shù)中返回(options 是一個任意名稱,且沒有特殊含義。它只是一個包含函數(shù)已解析的所有參數(shù)的摘要的數(shù)據(jù)對象)。
默認情況下,Python 將用戶給出的任何參數(shù)視為字符串。如果需要提取整數(shù)(數(shù)字),則必須指定選項 type=int,如示例代碼中的 --number 選項。
如果你有一個只是關閉和打開功能的參數(shù),那么你必須使用 boolean 類型,就像示例代碼中的 --verbose 標志一樣。這種選項只保存 True 或 False,用戶用來指定是否使用標志。如果使用該選項,那么會激活 stored_true。
當 getOptions 函數(shù)運行時,你就可以使用 options 對象的內(nèi)容,并讓程序根據(jù)用戶調(diào)用命令的方式做出決定。你可以使用測試打印語句查看 options 的內(nèi)容。將其添加到示例文件的底部:
print(getOptions())
然后帶上參數(shù)運行代碼:
$ python3 ./example.py -i foo -n 4Namespace(input='foo', number=4, output=None, verbose=False)
檢索值
示例代碼中的 options 對象包含了用戶提供的選項后面的值(或派生的布爾值)。例如,在示例代碼中,可以通過 options.number 來檢索 --number。
options = getOptions(sys.argv[1:])if options.verbose:print("Verbose mode on")else:print("Verbose mode off")print(options.input)print(options.output)print(options.number)# 這里插入你的 Python 代碼
示例中的布爾選項 --verbose 是通過測試 options.verbose 是否為 True(意味著用戶使用了 --verbose 標志)或 False(用戶沒有使用 --verbose 標志),并采取相應的措施。
幫助和反饋
argparse 還包含一個內(nèi)置的 --help(簡寫 -h)選項,它提供了有關如何使用命令的提示。這是從你的代碼派生的,因此生成此幫助系統(tǒng)不需要額外的工作:
$ ./example.py --helpusage: example.py [-h] [-i INPUT] [-o OUTPUT] [-n NUMBER] [-v]Parses command.optional arguments:-h, --help show this help message and exit-i INPUT, --input INPUTYour input file.-o OUTPUT, --output OUTPUTYour destination output file.-n NUMBER, --number NUMBERA number.-v, --verbose Verbose mode.
像專業(yè)人士一樣用 Python 解析
這是一個簡單的示例,來演示如何在 Python 應用中的解析參數(shù)以及如何快速有效地記錄它的語法。下次編寫 Python 腳本時,請使用 argparse 為其提供一些選項。你以后會感到自得,你的命令不會像一個快速的臨時腳本,更像是一個“真正的” Unix 命令!
以下是可用于測試的示例代碼:
#!/usr/bin/env python3# GNU All-Permissive License# Copying and distribution of this file, with or without modification,# are permitted in any medium without royalty provided the copyright# notice and this notice are preserved. This file is offered as-is,# without any warranty.import argparseimport sysdef getOptions(args=sys.argv[1:]):parser = argparse.ArgumentParser(description="Parses command.")parser.add_argument("-i", "--input", help="Your input file.")parser.add_argument("-o", "--output", help="Your destination output file.")parser.add_argument("-n", "--number", type=int, help="A number.")parser.add_argument("-v", "--verbose",dest='verbose',action='store_true', help="Verbose mode.")options = parser.parse_args(args)return optionsoptions = getOptions(sys.argv[1:])if options.verbose:print("Verbose mode on")else:print("Verbose mode off")print(options.input)print(options.output)print(options.number)
網(wǎng)頁名稱:使用Python解析參數(shù)
URL網(wǎng)址:http://www.dlmjj.cn/article/djdcggd.html


咨詢
建站咨詢
