मान लें कि मेरे पास एक स्क्रिप्ट है जो फ़ाइल पर कुछ काम करती है। यह कमांड लाइन पर इस फ़ाइल का नाम लेता है, लेकिन अगर यह प्रदान नहीं किया जाता है, तो यह ज्ञात फ़ाइल नाम (content.txt
, कहें) पर डिफ़ॉल्ट होता है।Argparse के साथ डिफ़ॉल्ट फ़ाइल नाम निर्दिष्ट करना, लेकिन उन्हें --help पर नहीं खोल रहा है?
parser = argparse.ArgumentParser(description='my illustrative example')
parser.add_argument('--content', metavar='file',
default='content.txt', type=argparse.FileType('r'),
help='file to process (defaults to content.txt)')
args = parser.parse_args()
# do some work on args.content, which is a file-like object
यह महान काम करता है: अजगर के argparse
के साथ, मैं निम्नलिखित का उपयोग करें। एकमात्र समस्या यह है कि यदि मैं python myscript --help
चलाता हूं, तो मुझे ArgumentError
मिलता है यदि फ़ाइल वहां नहीं है (जो मुझे लगता है), और सहायता टेक्स्ट नहीं दिखाया गया है। अगर मैं सिर्फ --help
चाहता हूं तो मैं फ़ाइल खोलने की कोशिश नहीं करता। क्या इसे करने का कोई तरीका है? मुझे पता है कि मैं तर्क को एक स्ट्रिंग बना सकता हूं और बाद में फ़ाइल खोलने का ख्याल रखता हूं (और मैं ऐसा कर रहा हूं), लेकिन argparse
इसकी देखभाल करना सुविधाजनक होगा।
ठीक है, ऐसा लगता है कि तुम यहाँ एक निर्णय करने के लिए होगा। आप या तो डिफ़ॉल्ट फ़ाइल उपलब्ध कर सकते हैं (इसके आधार पर 'डिफ़ॉल्ट' होने के कारण) या फ़ाइल को स्वयं खोलें, जैसा आपने स्वयं सुझाया है। वैकल्पिक रूप से, ऐसा लगता है कि आप डिफ़ॉल्ट रूप से stdin का उपयोग कर सकते हैं, हालांकि आप एक डिफ़ॉल्ट फ़ाइल नाम निर्दिष्ट करने में सक्षम नहीं होंगे, जो कि यदि आप उस फ़ाइल को पॉप्युलेट नहीं करना चाहते हैं तो यह एक बुरा विकल्प नहीं हो सकता है। –