2012-11-04 9 views
8

Ich baue ein Skript, das Argumente verwendet, um das Verhalten zu konfigurieren und eine undefinierte Anzahl von Dateien lesen soll. Mit dem folgenden Code kann ich eine einzelne Datei lesen. Gibt es eine Möglichkeit, dies zu bewerkstelligen, ohne ein weiteres Argument angeben zu müssen, wie viele Dateien das Skript lesen sollte?argparse: Undefinierte Anzahl von Argumenten erhalten

parser = argparse.ArgumentParser() 
parser.add_argument("FILE", help="File to store as Gist") 
parser.add_argument("-p", "--private", action="store_true", help="Make Gist private") 

Antwort

22

Ja, ändern Sie Ihre "FILE" Zeile:

parser.add_argument("FILE", help="File to store as Gist", nargs="+") 

Dieses statt alle Positionsargumente in einer Liste zu sammeln. Es wird auch einen Fehler erzeugen, wenn es nicht mindestens einen zu bearbeiten gibt.

Schauen Sie sich die nargs documentation

+0

Das war's, danke. Ich frage mich, warum es nicht im Argarse-Tutorial ist. – braindump

+1

http://docs.python.org/2/library/argparse.html#nargs – user2753523

+0

Das ist herrlich – pele88

5
import argparse 

parser = argparse.ArgumentParser() 

parser.add_argument('-FILE', action='append', dest='collection', 
        default=[], 
        help='Add repeated values to a list', 
        ) 

Verbrauch:

python argparse_demo.py -FILE "file1.txt" -FILE "file2.txt" -FILE "file3.txt" 

Und in Ihrem Python-Code, können Sie diese in der collection Variable zugreifen können, die im Wesentlichen eine Liste sein wird, eine leere Liste von Standard; und eine Liste, die die willkürliche Anzahl von Argumenten enthält, die Sie ihr liefern.

Verwandte Themen