Artikelverzeichnis
-
-
- 1. Einführung in das argparse-Modul
- 2. Beispiel ohne Verwendung von argparse
- 3. Beispiel mit argparse
-
- 3.1 Einfaches Beispiel für argparse
- 3.2 Erweitertes Beispiel für argparse
-
- 3.2.1 Optionale Parametereinstellungen
- 3.2.2 Optionale Parameterreferenznamen
- 3.2.3 Löschen Sie die Parameternameninformationen in der Hilfe
- 3.2.4 Obligatorische Parametereinstellungen
- 3.2.5 Eingabeeinstellung für Listenparameter (Multiparameter).
- 3.2.6 Verwendung sich gegenseitig ausschließender Parameter
- 3.2.7 Standardparametereinstellungen
- 4. Referenzen
-
1. Einführung in das argparse-Modul
argparse ist eine Python-Bibliothek zum Parsen von Befehlszeilenargumenten, die Teil der Python-Standardbibliothek ist. stdlib-Code basierend auf Python 2.7.
Das argparse- Modul erleichtert das Schreiben benutzerfreundlicher Befehlszeilenschnittstellen. Das Programm definiert die erforderlichen Argumente und argparse findet heraus, wie diese Argumente von sys.argv (der Befehlszeile) analysiert werden. Das argparse- Modul generiert außerdem automatisch Hilfe- und Nutzungsmeldungen und gibt Fehler aus, wenn der Benutzer dem Programm ungültige Argumente übermittelt.
2. Beispiel ohne Verwendung von argparse
Im Allgemeinen werden keine Terminalbefehle verwendet. Bei einigen Programmen, die eine Variablenzuweisung erfordern, führen wir häufig Folgendes aus:
- 1. Schreiben Sie hart direkt in das Programm (oder die Konfigurationsdatei).
- 2. Oder verwenden Sie die Eingabe, um sie mehrmals in die Befehlszeile einzugeben, sodass es nicht einfach ist, den Vorgang mehrmals zu debuggen und zu ändern. Das Folgende ist ein Beispiel:
import math
def cal_vol(radius,height):
vol = math.pi * pow(radius,2) * height
return vol
if __name__=='__main__':
print(cal_vol(2,4))
3. Beispiel mit argparse
3.1 Einfaches Beispiel für argparse
Die wichtigsten Schritte zur Verwendung von argparse:
- Importieren Sie das argparse- Paket.
- Erstellen Sie ein ArgumentParser() -Parameterobjekt.
- Rufen Sie die Methode add_argument() auf , um Parameter zum Parameterobjekt hinzuzufügen.
- Verwenden Sie parse_args () , um das Parameterobjekt des hinzugefügten Parameters zu analysieren und das Analyseobjekt zu erhalten. Wenn andere Teile des Programms Befehlszeilenparameter verwenden müssen, verwenden Sie zum Abrufen das Analyseobjekt.parameter.
Hier ist ein einfaches Beispiel:
import math
import argparse # 1、导入argpase包
def parse_args():
parse = argparse.ArgumentParser(description='Calculate cylinder volume') # 2、创建参数对象
parse.add_argument('radius', type=int, help='Radius of Cylinder') # 3、往参数对象添加参数
parse.add_argument('height', type=int, help='height of Cylinder')
args = parse.parse_args() # 4、解析参数对象获得解析对象
return args
# 计算圆柱体积
def cal_vol(radius, height):
vol = math.pi * pow(radius, 2) * height
return vol
if __name__ == '__main__':
args = parse_args()
print(cal_vol(args.radius, args.height)) # 5、使用解析对象.参数获取使用命令行参数
Hinweis: Da dies zu diesem Zeitpunkt nicht angegeben ist, werden die Befehlszeilenparameter standardmäßig in der angegebenen Reihenfolge zugewiesen, und unterschiedliche Reihenfolgen führen zu unterschiedlichen Ergebnissen
Der Standardbefehl -h kann beim Hinzufügen von Parametern die eingestellten Hilfeinformationen abrufen
- Die Eingabe von Befehlszeilenparametern wird standardmäßig in der Reihenfolge zugewiesen, und unterschiedliche Reihenfolgen führen zu unterschiedlichen Ergebnissen.
- Der Standardbefehl -h kann beim Hinzufügen von Parametern die eingestellten Hilfeinformationen abrufen.
3.2 Erweitertes Beispiel für argparse
Methode add_argument() (definiert, wie Befehlszeilenparameter analysiert werden):
Die Parameter werden wie folgt erklärt:
-
Name oder Flags – Ein Name oder eine Liste von Optionszeichenfolgen, z. B. foo oder -f, --foo.
-
Aktion – die Aktion, wenn die Befehlszeile auf den Parameter stößt. Der Standardwert ist „Speichern“.
- – store_const, was darauf hinweist, dass die Zuweisung const ist;
- – Anhängen, Speichern der gefundenen Werte als Liste, d. h. wenn die Parameter wiederholt werden, werden mehrere Werte gespeichert;
- – append_const, das einen in der Parameterspezifikation definierten Wert in einer Liste speichert;
- – count, speichert die Anzahl der Begegnungen; darüber hinaus können Sie auch argparse.Action erben, um die Parameteranalyse anzupassen;
-
nargs – die Anzahl der Befehlszeilenargumente, die gelesen werden sollen
- Eine bestimmte Zahl oder eine ?-Zahl. Wenn kein Wert angegeben ist, verwenden Sie „default“ für das Positionsargument und „const“ für das optionale Argument
- Oder *-Zeichen, das 0 oder mehr Parameter angibt;
- Oder ein +-Zeichen bedeutet einen oder mehrere Parameter.
-
const – der erforderliche konstante Wert für Aktion und Nargs.
-
default – der Standardwert, wenn kein Parameter angegeben ist.
-
Typ – Der Typ, in den das Befehlszeilenargument konvertiert werden soll. Der Standardwert ist ein String-Typ.
-
Auswahlmöglichkeiten – Ein Container mit zulässigen Werten für den Parameter.
-
erforderlich – Ob optionale Parameter weggelassen werden können (nur für optionale Parameter).
-
help – die Hilfeinformationen des Parameters. Wenn argparse.SUPPRESS angegeben wird, bedeutet dies, dass die Hilfeinformationen des Parameters nicht angezeigt werden.
-
Metavar – der Name des Parameters in der Verwendungsbeschreibung. Standardmäßig ist der Name des Parameters für den erforderlichen Parameter und der Name des Parameters in Großbuchstaben für den optionalen Parameter.
-
dest – der geparste Parametername, standardmäßig wird der längste Name für optionale Parameter ausgewählt, Bindestriche werden in Unterstriche umgewandelt.
3.2.1 Optionale Parametereinstellungen
import math
import argparse # 1、导入argpase包
def parse_args():
parse = argparse.ArgumentParser(description='Calculate cylinder volume') # 2、创建参数对象
parse.add_argument('--radius', default=2, type=int, help='Radius of Cylinder') # 3、往参数对象添加参数
parse.add_argument('--height', default=4, type=int, help='height of Cylinder')
args = parse.parse_args() # 4、解析参数对象获得解析对象
return args
def cal_vol(radius, height):
vol = math.pi * pow(radius, 2) * height
return vol
if __name__ == '__main__':
args = parse_args()
print(cal_vol(args.radius, args.height)) # 5、使用解析对象.参数获取使用命令行参数
Durch Hinzufügen von - - vor dem Parameternamen wird er als optionaler Parameter festgelegt. Wenn er nicht eingegeben wird, wird der Standardwert verwendet (wenn Standard nicht festgelegt ist, lautet der Standardwert None), wie im folgenden Beispiel gezeigt:
3.2.2 Optionale Parameterreferenznamen
import math
import argparse # 1、导入argpase包
def parse_args():
parse = argparse.ArgumentParser(description='Calculate cylinder volume') # 2、创建参数对象
parse.add_argument('-r', '--radius', default=2, type=int, help='Radius of Cylinder') # 3、往参数对象添加参数
parse.add_argument('-H', '--height', default=4, type=int, help='height of Cylinder')
args = parse.parse_args() # 4、解析参数对象获得解析对象
return args
def cal_vol(radius, height):
vol = math.pi * pow(radius, 2) * height
return vol
if __name__ == '__main__':
args = parse_args()
print(cal_vol(args.radius, args.height)) # 5、使用解析对象.参数获取使用命令行参数
Durch das Festlegen optionaler Parameter auf Referenznamen können die Parameternamen gekürzt und die Eingabe von Befehlszeilenparametern vereinfacht werden:
Wie folgt: Sowohl -r als auch - -radius sind verfügbar
3.2.3 Löschen Sie die Parameternameninformationen in der Hilfe
import math
import argparse # 1、导入argpase包
def parse_args():
parse = argparse.ArgumentParser(description='Calculate cylinder volume') # 2、创建参数对象
parse.add_argument('-r', '--radius', default=2, type=int, metavar='', help='Radius of Cylinder') # 3、往参数对象添加参数
parse.add_argument('-H', '--height', default=4, type=int, metavar='', help='height of Cylinder')
args = parse.parse_args() # 4、解析参数对象获得解析对象
return args
def cal_vol(radius, height):
vol = math.pi * pow(radius, 2) * height
return vol
if __name__ == '__main__':
args = parse_args()
print(cal_vol(args.radius, args.height)) # 5、使用解析对象.参数获取使用命令行参数
Im Vergleich zu den von -h in 3.2.2 angezeigten Informationen ist der Grund für das Entfernen des Parameternamens wie folgt
:
Metavar zeigt den Parameternamen in der Verwendungsbeschreibung über -h an.
Für obligatorische Parameter ist der Standardwert der Parametername und Für optionale Parameter werden standardmäßig alle Parameter in Großbuchstaben geschrieben. Name. Es wird hier nicht angezeigt, indem es auf leer gesetzt wird.
3.2.4 Obligatorische Parametereinstellungen
import math
import argparse # 1、导入argpase包
def parse_args():
parse = argparse.ArgumentParser(description='Calculate cylinder volume') # 2、创建参数对象
parse.add_argument('-r', '--radius', default=2, type=int, metavar='', required=True, help='Radius of Cylinder') # 3、往参数对象添加参数
parse.add_argument('-H', '--height', default=4, type=int, metavar='', required=True, help='height of Cylinder')
args = parse.parse_args() # 4、解析参数对象获得解析对象
return args
def cal_vol(radius, height):
vol = math.pi * pow(radius, 2) * height
return vol
if __name__ == '__main__':
args = parse_args()
print(cal_vol(args.radius, args.height)) # 5、使用解析对象.参数获取使用命令行参数
Wenn „required=True“ festgelegt ist , muss der Parameter unabhängig davon, ob er optional ist oder nicht, eingegeben werden, wie im folgenden Beispiel gezeigt:
3.2.5 Eingabeeinstellung für Listenparameter (Multiparameter).
import math
import argparse
def parse_args():
parse = argparse.ArgumentParser(description='Calculate cylinder volume')
parse.add_argument('-n', '--num', type=int, nargs='+', metavar='', required=True, help='a string of nums')
args = parse.parse_args()
return args
if __name__ == '__main__':
args = parse_args()
print(args.num)
for i in list(args.num):
print(i)
3.2.6 Verwendung sich gegenseitig ausschließender Parameter
import math
import argparse
def parse_args():
parse = argparse.ArgumentParser(description='Calculate cylinder volume')
parse.add_argument('-r', '--radius', default=2, type=int, metavar='', required=True, help='Radius of Cylinder')
parse.add_argument('-H', '--height', default=4, type=int, metavar='', required=True, help='height of Cylinder')
group = parse.add_mutually_exclusive_group() # 1、在参数对象中添加互斥组
group.add_argument('-b', '--brief', action='store_true', help='print brief message') # 2、在互斥组中添加参数(store_true默认当命令行未输入参数则为False,否则为True)
group.add_argument('-v', '--verbose', action='store_true', help='print verbose message')
args = parse.parse_args()
return args
def cal_vol(radius, height):
vol = math.pi * pow(radius, 2) * height
return vol
if __name__ == '__main__':
args = parse_args()
volume = cal_vol(args.radius, args.height)
if args.brief:
print(volume)
elif args.verbose:
print('Volume of Cylinder with radius %s and height %s is %s' % (args.radius,args.height,volume))
else:
print('Volume of Cylinder is %s' % (volume))
In der Befehlszeile können b und v nur einen der beiden Parameter eingeben.
3.2.7 Standardparametereinstellungen
set_defaults() kann den Standardwert einiger Parameter festlegen
import math
import argparse
def parse_args():
parse = argparse.ArgumentParser(description='Calculate cylinder volume')
parse.add_argument('-r', '--radius', default=2, type=int, metavar='', required=True, help='Radius of Cylinder')
parse.set_defaults(height=4)
args = parse.parse_args()
return args
def cal_vol(radius, height):
vol = math.pi * pow(radius, 2) * height
return vol
if __name__ == '__main__':
args = parse_args()
print(cal_vol(args.radius, args.height))