के बजाय किसी विकल्प से फ़ाइल के तर्कों को पढ़ने के लिए argparse कैसे प्राप्त करें, मैं कमांड लाइन और संभावित रूप से टेक्स्ट फ़ाइलों से तर्क पढ़ने के लिए पाइथन के Argparse मॉड्यूल का उपयोग कैसे करना चाहता हूं। मैं argparse के fromfile_prefix_chars
के बारे में जानता हूं लेकिन यह वही नहीं है जो मैं चाहता हूं। मुझे व्यवहार चाहिए, लेकिन मुझे सिंटैक्स नहीं चाहिए। मैं एक अंतरफलक है कि इस तरह दिखता है चाहता हूँ:उपसर्ग
$ python myprogram.py --foo 1 -A somefile.txt --bar 2
जब argparse -एक देखता है, यह sys.argv या जो कुछ भी मैं इसे देने से पढ़ बंद कर देना चाहिए, और एक समारोह मैं लिखने कि somefile.text पढ़ा जाएगा और बदले फोन तर्कों की एक सूची। जब फ़ाइल समाप्त हो जाती है तो इसे पार्सिंग sys.argv या जो कुछ भी फिर से शुरू करना चाहिए। यह महत्वपूर्ण है कि फ़ाइल में तर्कों की प्रसंस्करण क्रम में हो (यानी: -फू को संसाधित किया जाना चाहिए, फिर फ़ाइल में तर्क, फिर -bar, ताकि फ़ाइल में तर्क ओवरराइड हो सकें - foo, और - बार फ़ाइल में क्या हो सकता है ओवरराइड हो सकता है)।
ऐसी चीज संभव है? क्या मैं एक कस्टम फ़ंक्शन लिख सकता हूं जो Argparse के स्टैक पर नए तर्क को दबाता है, या उस प्रभाव के लिए कुछ?
आपके संस्करण में, एक तर्क के विशेष संचालन को ट्रिगर करेगा (उपसर्ग चरित्र के बजाय)? – martineau
@ मार्टिनौ: "-ए" विकल्प कहता है "अगला तर्क एक फ़ाइल को पढ़ने के लिए है"। मुझे उस फ़ाइल को पढ़ने और तर्कों को वापस करने के लिए अपना स्वयं का फ़ंक्शन लिखने में सक्षम होना चाहिए (यह एक-तर्क-प्रति-पंक्ति प्रारूप में नहीं है) –
[_parse_known_args] के स्रोत को देखकर (https: //hg.python। संगठन/cpython/फ़ाइल/3.4/लीब/argparse.py # l1769), ऐसा लगता है कि argparse सामने के सभी तर्कों को जानना पसंद करता है। अगर आपके पास @fromfile_prefix_chars सेट है, तो यह तर्कों को देखता है और पार्स (_read_args_from_files) के लिए पूरी तरह से नई सूची बनाता है। मुझे लगता है कि तर्कों की सूची प्राप्त करने के लिए समय से पहले sys.argv को पार्स करना आपका सबसे अच्छा विकल्प है। – mgilson