2012-11-04 20 views
8

मैं एक स्क्रिप्ट तैयार कर रहा हूं जो व्यवहार को कॉन्फ़िगर करने के लिए तर्कों का उपयोग करता है और फ़ाइलों की एक अनिर्धारित संख्या को पढ़ेगा। निम्नलिखित कोड का उपयोग करने से मुझे एक एकल फ़ाइल पढ़ने की अनुमति मिलती है। क्या यह पूरा करने का कोई तरीका है कि बिना किसी तर्क के सेट किए, यह बताएं कि स्क्रिप्ट को कितनी फाइलें पढ़नी चाहिए?argparse: तर्कों की अनिर्धारित संख्या प्राप्त करें

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") 

उत्तर

22

हाँ, करने के लिए अपने "FILE" लाइन बदलने के लिए:

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

यह बजाय एक सूची में सभी स्थितीय तर्क इकट्ठा करेगा। यदि कम से कम एक संचालित करने के लिए नहीं है तो यह एक त्रुटि भी उत्पन्न करेगा। बाहर nargs documentation

+0

यही है, धन्यवाद। मुझे आश्चर्य है कि यह Argparse ट्यूटोरियल में क्यों नहीं है। – braindump

+1

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

+0

यह शानदार है – pele88

5
import argparse 

parser = argparse.ArgumentParser() 

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

प्रयोग

की जांच:

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

और अपने अजगर कोड में, आप collection चर में एक्सेस कर सकते हैं, जो अनिवार्य रूप से एक सूची हो जाएगा, द्वारा एक खाली सूची चूक; और एक सूची जिसमें मनमानी संख्या के तर्क हैं जो आप इसे आपूर्ति करते हैं।

संबंधित मुद्दे