2016-07-23 23 views
0

Ich möchte Argarse verwenden, um die Argumentnamen & Werte zu schreiben, die es in einer Datei empfängt. Ich habe dies so weit:Wie kann ich den Argumentnamen von Python argparse in eine Datei schreiben?

import argparse 

parser = argparse.ArgumentParser() 
parser.add_argument("--infile", help = "seed file", default = 'test') 
parser.add_argument("--lang", help="wiki language bigram", default = 'en') 
parser.add_argument("--request_type", help="request type", default = 'sum') 
parser.add_argument("--outfile", help = "path to outfile", default = 'outfile') 
parser.add_argument("--summary", help = "true or false", action = "store_true") 
parser.add_argument("--pagehits", help = "path to list of page hits", default = 'pagehits') 
parser.add_argument("--exemplar_file", help = "file to inspire book") 

args = parser.parse_args() 

input_file = args.infile 
print(args.infile) 
print(var(args)) 

with open('modified-variables', 'w') as outfile: 
    outfile.write(args.infile) 
    outfile.write('hello world') 

mit --infile "/ path/to/file" --lang "en" ausgegeben:

/path/to/file 
en 

[but nothing written to file] 

ich es Schleife wollen über alle Positions Parameter und alle, die schreiben, die in der Befehlszeile mit modifizierter Variablen im Format

infile="/path/to/file" 
lang="en" 

googeln hilft mir herauszufinden, wird nicht geliefert werden, wie die argnames zu drucken und es gibt construc etwas einfach falsch in der mit/Schreib t.

UPDATE: hinzugefügt print (Vars ((args)) pro Antwort # 1, das ergibt:

{'lang': 'en', 'exemplar_file': None, 'pagehits': 'pagehits', 'summary': False, 'outfile': '/tmp/pagekicker/123/out_test', 'request_type': 'sum', 'infile': '/home/fred/pagekicker-community/scripts/seeds/revolutionary-figures'} 

Jetzt will ich schreiben gerade

lang = "en" exemplar_file = "None"

usw.

in eine Datei.

+0

Warum rufen Sie 'parse_args' zweimal an? – chepner

+0

das ist ein Fehler, behoben –

Antwort

1

Haben Sie

versucht
print(args) # the default Namespace display format 

oder

print(vars(args)) 

vars(args) ist ein Wörterbuch, das Sie in einer Reihe von verschiedenen Arten darstellen. Sie könnten es in eine Liste von Tupeln umwandeln (.items()), Sie könnten über die keys usw. iterieren.