2012-10-24 12 views
5

मैं एक प्रोग्राम बनाने की कोशिश कर रहा हूं जिसे कमांड लाइन से बुलाया जा सकता है और पायथन 2.6 में कीवर्ड तर्कों का उपयोग किया जा सकता है। अब तक मैं कोशिश की है:python execables में kwargs

#!/usr/bin/python 
def read(foo = 5): 
    print foo 
    return 0 
if __name__ == '__main__' 
    read() 

जब मैं कमांड लाइन से चलाने का प्रयास: ./test.py कार्यक्रम प्रिंट 5 अपेक्षा के अनुरूप। ./test.py foo=6 का उपयोग करने का कोई तरीका है? मैं कीवर्ड तर्कों को संरक्षित करना चाहता हूं।

यह एक साधारण सवाल की तरह लगता है, लेकिन मुझे इसके लिए एक अच्छा स्रोत नहीं मिला है।

+2

['argparse'] (http://docs.python.org/dev/library/argparse.html) मॉड्यूल पर एक नज़र डालें जो केवल इस उद्देश्य के लिए है। –

उत्तर

6

पायथन लाइब्रेरी में बनाया गया है ताकि आप स्क्रिप्ट argparse पर पास कमांड लाइन तर्क प्राप्त करने में सहायता कर सकें। उपयोग तो थोड़ा अलग है क्या आप अपने प्रश्न में हालांकि का वर्णन कर रहे हैं ...

एक बुनियादी स्तर आप sys.argv द्वारा सभी आदेश पंक्ति तर्क का उपयोग कर सकते है, जो तर्क

की एक सूची हो जाएगा पर

क्षमा करना चाहिए था उल्लेख किया है कि पायथन 2.6 लाइब्रेरी को optparse

+0

त्वरित टिप्पणी के लिए धन्यवाद। दुर्भाग्य से मैं अजगर 2.6 का उपयोग कर रहा हूं, इसलिए 'argparse' unavailbale है और मैंने कीवर्ड तर्कों के साथ' sys.argv' का उपयोग करने के तरीके को कैसे नहीं किया है, लेकिन मैं अभी भी इसके साथ खेल रहा हूं। – greatscott

+1

@greatscott: python2.6 में 'getopt' है, जो आपके मामले में करना चाहिए। – SilentGhost

+1

2.6 में ऑप्टर्स भी –

3

कुछ ऐसा कहा जाता है?

if __name__ == '__main__': 
    kwargs = dict(x.split('=', 1) for x in sys.argv[1:]) 
    read(**kwargs) 

जिसके अनुसार, argparse और optparse शायद आप और अधिक मजबूत और कमांडलाइन करने के लिए इस्तेमाल किसी के लिए और अधिक प्राकृतिक कुछ देने के लिए जा रहे हैं। (उल्लेख नहीं है, स्ट्रिंग के अलावा अन्य प्रकार के तर्कों का समर्थन करना।)

ओह, और यदि आप वास्तव में हैं तो आपके फ़ंक्शन के इंटरैक्टिव उपयोग के बाद, इंटरैक्टिव दुभाषिया का उपयोग करें; या तो python या ipython। आपको कोड को .py में समाप्त होने वाली फ़ाइल में रखना होगा और इसे आयात करना होगा, फिर आप इसे कॉल कर सकते हैं।

+0

धन्यवाद पर 'getopt' और' optparse' में देखूंगा। मैं वास्तव में एक सहकर्मी के लिए यह लिख रहा हूं जो 'पायथन' या 'आईपीथॉन' के माध्यम से काम करने की बजाय कमांड लाइन से सब कुछ चलाने के लिए चाहता है। हालांकि मैं मदद की सराहना करता हूं। मैं 'optparse' की जांच करूंगा। – greatscott

1

कम सामान्य, लेकिन बहुत ही रोचक विकल्प docopt है: एक लाइब्रेरी जो आपके प्रोग्राम के लिए लिखने वाले सहायता संदेश से एक तर्क पार्सर उत्पन्न करती है (on github)।