Domanda

sto cercando di recuperare i parametri della riga di comando opzionali per uno script Python (2.7 in Windows) e le cose non vanno come devono andare. Il codice è:

parser = argparse.ArgumentParser(description = 'Process display arguments')
parser.add_argument('-t', nargs = '?', default = 'baz')
args = parser.parse_args(['-t'])
print args.t

Se corro "program.py" con nessun parametro, args.t viene stampata come Nessuno. Se corro "program.py -t", args.t viene stampata come Nessuno. Se corro "program.py -t foo", args.t viene stampato come Nessuno.

Perché non ricevo il valore dalla riga di comando in args.t?

È stato utile?

Soluzione

Non lo dia ['-t'] a parse_args. Basta fare:

args = parser.parse_args()

Qualsiasi argomento si passa a parse_args sono utilizzati al posto della riga di comando. Quindi, con tale argomento non importa quanto a linea di comando si utilizza, argparse non lo vede.

Altri suggerimenti

La linea

args = parser.parse_args(["-t"])

sta passando gli argomenti della riga di comando [ "-t"] per il parser. Si desidera lavorare con l'attuale argomenti della riga di comando, in modo da cambiare la linea a

args = parser.parse_args()

Utilizza la const parola chiave argomento :

import argparse
parser = argparse.ArgumentParser(description = 'Process display arguments')
parser.add_argument('-t', nargs = '?', const = 'baz', default = 'baz')
args = parser.parse_args()
print args.t

Esecuzione cede:

% test.py          # handled by `default`
baz
% test.py -t       # handled by `const`
baz
% test.py -t blah
blah
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top