Ho usato principalmente argparse per creare script da riga di comando in python, e l'idioma che uso generalmente è che assegno gli argomenti come attributi di un oggetto, quindi analizzarli singolarmente su una variabile che corrisponde al loro nome attributo. Questo sembra un po 'ripetitivo. C'è un modo per assegnarli tutti nello spazio dei nomi globale e tagliare la fase di assegnazione; o come spesso accade quando qualche comportamento di pitone sembra controintuitivo per me, può un saggio esperto di Python sottolineare che esiste una buona ragione per cui non dovrei farlo o voglio farlo?Python argparse parse_args nel namespace globale (o un motivo questa è una cattiva idea)
Quello che ho ora è questo:
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--db",type=str, dest='db', nargs='?', default="test")
parser.add_argument("--collection",type=str, dest='collection', nargs='?', help="Collection, default is test", default="test")
args = parser.parse_args()
db = args.db # gross!
collection = args.collection # yuck!
print(db)
print(collection)
Quello che mi piacerebbe questo è:
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--db",type=str, dest='db', nargs='?', default="test")
parser.add_argument("--collection",type=str, dest='collection', nargs='?', help="Collection, default is test", default="test")
parser.SUPER_parse_args() # now, db and collection are already in the namespace!
print(db)
print(collection)
Non sembra un gran che, quando ho solo 2 argomenti, ma se io ne ho circa 10, raddoppiando i passi dell'assegnazione, dove rinominare nel namespace globale gli attributi che già esistono nell'oggetto args, inizia a infastidirmi.
no. Non farlo. Io userei 'args' direttamente invece. –
@MartijnPieters, tu eri esattamente uno dei saggi esperti di pitone che speravo potessero pesare su questo. – Mittenchops