Wie kann ich argparse.Action in eine Unterklasse umwandeln, um eine benutzerdefinierte Aktion hinzuzufügen?Python

Python-Programme
Anonymous
 Wie kann ich argparse.Action in eine Unterklasse umwandeln, um eine benutzerdefinierte Aktion hinzuzufügen?

Post by Anonymous »

Ich versuche, ein Befehlszeilenskript auszuführen, das einen Standardwert in den Namespace einfügt, wenn der Wert fehlt, oder das bereitgestellte Argument so übernimmt, wie es ist, wenn es vorhanden ist.

Also möchte ich Folgendes tun:

Code: Select all

myscript.py --merge
Würde dazu führen, dass der Argument-Parser-Namespace so aussieht:

Code: Select all

Namespace(merge='--merge')
Sonst wenn ich anrufe

Code: Select all

myscript.py
Namespace sollte so aussehen:

Code: Select all

Namespace(merge='DONTMERGE')
Ich glaube, ich muss eine Unterklasse der __call__-Methode der argparse.Action-Klasse erstellen, um eine benutzerdefinierte Aktion wie hier angegeben auszuführen: https://pymotw.com/2/argparse/, aber ich kann nicht herausfinden, wie das geht.

Ich dachte, so etwas würde den Zweck erfüllen:

Code: Select all

class CustomAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
if isinstance(self.values, None):
self.values = 'NOMERGE'
else:
self.values = '--nomerge'
setattr(namespace, self.dest, values)
Leider erhalte ich nicht das erwartete Ergebnis.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post