Wie ändere ich den Zielnamen des argparse-Positionsarguments?Python

Python-Programme
Anonymous
 Wie ändere ich den Zielnamen des argparse-Positionsarguments?

Post by Anonymous »

Ich habe Probleme bei der Verwendung des dest-Parameters von add_argument mit Positionsargumenten. Der Grund, warum ich dies möchte, ist, dass ich nargs='*' verwende und es für mich sinnvoll ist, den Argumentnamen im Singular zu haben, damit seine Hilfe als [Ziel ...] ausgegeben wird, das Ziel jedoch im Plural, um seinem Listentyp zu entsprechen:

Code: Select all

# Public function for use from other scripts
def run(targets: list[str]):
pass

if __name__ == '__main__':
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('target', dest='targets', nargs='*', default=['.'])
run(**vars(parser.parse_args()))
löst Fehler aus:

Code: Select all

    parser.add_argument('target', dest='targets', nargs='*', default=['.'])
File "/usr/lib/python3.13/argparse.py", line 1452, in add_argument
raise ValueError('dest supplied twice for positional argument')
ValueError: dest supplied twice for positional argument
Ich weiß, dass ich es „beheben“ könnte, indem ich vars nicht direkt verwende oder das resultierende Diktat ändere, bevor ich es zur Ausführung übergebe, aber ich würde es lieber direkt in der API von argparse tun, da die vars sicherstellen, dass die CLI dieselbe API hat wie das als Bibliothek importierte Skript.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post