Ursache Pythons Argparse zum Ausführen der Aktion für den Standard

9

Ich verwende die Aktion von argparse, um einer Klasse verschiedene Daten hinzuzufügen. Ich möchte diese Aktion für den Standardwert verwenden, wenn dieses Argument nicht in der Befehlszeile angegeben wird. Ist das möglich? Danke!

    
Max Bileschi 05.02.2014, 17:04
quelle

2 Antworten

4

argparse verwendet das action nicht, wenn Sie default anwenden. Es verwendet nur setattr . Es kann den type verwenden, wenn der Standardwert eine Zeichenfolge ist. Aber Sie können action direkt aufrufen.

Hier verwende ich eine benutzerdefinierte Aktionsklasse, die aus der Dokumentation entlehnt ist. In der ersten parse_args passiert nichts. Dann erstelle ich ein neues namespace und rufe die Aktion für den Standard auf. Dann übergebe ich diesen Namensraum an parse_args . Um das zu verstehen, müssen Sie es in eine interaktive Shell importieren und die Attribute des Namespace und der Aktion untersuchen.

%Vor%

welches produziert:

%Vor%

Ich habe die Ausgabe so angepasst, dass sie hervorhebt, wenn die Aktion verwendet wird.

Hier können Sie eine spezielle Aktion für ein Argument ausführen, das nicht in der Befehlszeile angegeben ist (oder mit einem Wert == für den Standardwert angegeben wird). Es ist eine Vereinfachung der Klasse in Ссылка .

%Vor%

Die Eingabe erfolgt nach parse_args . Ich sehe keinen Grund, parse_args erneut aufzurufen.

    
hpaulj 05.02.2014, 20:49
quelle
0

Ich musste den Benutzer auffordern, wenn eine Option nicht angegeben wurde - so habe ich es gemacht:

%Vor%

Ich bin interessiert, ob das irgendwie gemacht werden kann, ohne die Argumente analysieren zu müssen ( import sys ). Vielleicht einige Konstruktoroptionen für argparse.Action ?

    
Mr_and_Mrs_D 08.07.2014 18:12
quelle

Tags und Links