जीएनयू गेटोपेट, और कमांड लाइन टूल्स जो इसका उपयोग करते हैं, विकल्पों और तर्कों को इंटरलीव किए जाने की अनुमति देते हैं, जिन्हें अनुमति विकल्प के रूप में जाना जाता है (http://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html#Using-Getopt देखें)। पर्ल गेटोपेट :: लांग मॉड्यूल भी इसका समर्थन करता है (qw (: config gnu_getopt) के साथ)। Argparse अनुमति विकल्प (या यहां तक कि उल्लेख) का समर्थन नहीं करता प्रतीत होता है।क्या पाइथन का Argparse gnu getopt जैसे तर्क आदेश को अनुमति दे सकता है?
तर्क/ऑप्ट ऑर्डर से संबंधित कई SO प्रश्न हैं, लेकिन कोई भी इस प्रश्न का उत्तर नहीं दे रहा है: क्या तर्क प्राप्त करने के लिए तर्क प्राप्त करने के लिए तर्क दिया जा सकता है?
उपयोग के मामले जीएनयू तरह की तरह एक प्रोटोटाइप कमांड लाइन हस्ताक्षर है: जिसमें
sort [opts] [files]
1) विकल्प और फ़ाइलों permuted हैं, और 2) फ़ाइल सूची शून्य या अधिक बहस हो सकती है।
उदाहरण के लिए:
import argparse
p = argparse.ArgumentParser();
p.add_argument('files',nargs='*',default=['-']);
p.add_argument('-z',action='store_true')
p.parse_args(['-z','bar','foo']) # ok
p.parse_args(['bar','foo','-z']) # ok
p.parse_args(['bar','-z','foo']) # not okay
usage: ipython [-h] [-z] [files [files ...]]
मैं कोशिश की है:
- p.parse_known_args - शिकायत नहीं है, लेकिन करता है वास्तव में या तो दूसरे स्थान पर रखना नहीं है और यह तर्क के बारे में भी मुंह नहीं करता जो अमान्य विकल्पों की तरह दिखता है (उदाहरण के लिए, - bogus या -b ऊपर)।
- p.add_argument ('फ़ाइलें', nargs = argparse.REMAINDER) - विकल्प -z फ़ाइलों में शामिल किया जाता है, जब तक कि स्थितीय आर्ग
- p.add_argument ('फ़ाइलें', nargs = '*', कार्रवाई से पहले = ' संलग्न ');
मैं ऊपर जीएनयू सॉर्ट प्रोटोटाइप के करीब कुछ कार्यान्वित करना चाहता हूं। मुझे ध्वज में दिलचस्पी नहीं है जिसे प्रत्येक फ़ाइल के लिए निर्दिष्ट किया जा सकता है (उदा। -f फ़ाइल 1 -f फ़ाइल 2)।