2013-10-17 15 views
5

Parsuję niektóre argumenty wiersza poleceń, a większość z nich należy przekazać do metody, ale nie wszystkie.Python. Argparser. Usuwanie niepotrzebnych argumentów

parser = argparse.ArgumentParser() 
parser.add_argument("-d", "--dir", help = "Directory name", type = str, default = "backups") 
parser.add_argument("-n", "--dbname", help = "Name of the database", type = str, default = "dmitrii") 
parser.add_argument("-p", "--password", help = "Database password", type = str, default = "1123581321") 
parser.add_argument("-u", "--user", help = "Database username", type = str, default = "Dmitriy") 
parser.add_argument("-a", "--archive", help = "Archive backup", action="store_true") 
args = parser.parse_args() 

backup(**vars(args)) # the method where i need to pass most of the arguments, except archive. Now it passes all. 
+0

Albo skopiować args i usunąć archiwum z nim, lub skopiuj wszystko z wyjątkiem archiwum. – grim

+0

Jestem bardzo nowy dla Pythona, czy mógłbyś mi pomóc. Moja umiejętność rozumienia listy wynosi 0. – Anarion

+1

Jeśli 'backup' jest twoją własną funkcją, możesz dodać' ** kwargs' do swojej listy argumentów. Wtedy zaakceptuje pełny 'var (args)' bez narzekania. – hpaulj

Odpowiedz

5

albo utworzyć nowy słownik, który nie ma tego klucza:

new_args = dict(k, v for k, v in args.items() if k != 'archive') 

lub usunąć klucz z oryginalnego słownika:

archive_arg = args['archive'] # save for later 
del args['archive'] #remove it 
+0

A więc args to słownik krotek? Jak usunąć element ze słownika oparty tylko na jednej wartości krotki? – Anarion

+0

Dziękuję bardzo, tego właśnie potrzebowałem, ale nie byłem pewien jak to zrobić. – Anarion

+1

@Anarion: 'args.items()' zwraca listę par klucz-wartość. 'jeśli k! = 'archive'' zachowuje elementy, których kluczem nie jest'' archive''. 'dict' buduje nowy słownik z wynikowych krotek (' k, v'). Usunięcie klucza jest prostsze: 'del args [klawisz]' usuwa klucz ze słownika. Jeśli ta odpowiedź jest pomocna, rozważ zaakceptowanie odpowiedzi. –

Powiązane problemy