मैं यह नोट करना चाहूंगा कि पिछले उत्तरों ने उपयोगकर्ता के ज्ञान के बारे में कई धारणाएं बनाई थीं। यह उत्तर प्रश्न को अधिक ट्यूटोरियल स्तर पर उत्तर देने का प्रयास करता है।
पायथन के हर आह्वान के लिए, sys.argvस्वचालित रूप से कमांड-लाइन पर तर्कों (रिक्त स्थान द्वारा अलग किए गए) का प्रतिनिधित्व करने वाले तार की एक सूची है। नाम सी प्रोग्रामिंग सम्मेलन से आता है से आया है जिसमें argv और argc कमांड लाइन तर्कों का प्रतिनिधित्व करते हैं।
आप लिस्ट और स्ट्रिंग्स के बारे में अधिक जानना चाहते हैं, जैसा कि आप पायथन के साथ खुद को परिचित कर रहे हैं, लेकिन इस बीच, यहां कुछ चीजें जानने योग्य हैं।
आप बस एक स्क्रिप्ट बना सकते हैं जो तर्कों का प्रतिनिधित्व करते हुए प्रिंट करता है। यह lenसूची पर फ़ंक्शन का उपयोग करते हुए, तर्कों की संख्या भी प्रिंट करता है ।
from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
स्क्रिप्ट को 2.6 या बाद के पायथन की आवश्यकता है। यदि आप इस स्क्रिप्ट को कॉल करते हैं print_args.py, तो आप इसे विभिन्न तर्कों के साथ देख सकते हैं कि क्या होता है।
> python print_args.py
['print_args.py'] 1
> python print_args.py foo and bar
['print_args.py', 'foo', 'and', 'bar'] 4
> python print_args.py "foo and bar"
['print_args.py', 'foo and bar'] 2
> python print_args.py "foo and bar" and baz
['print_args.py', 'foo and bar', 'and', 'baz'] 4
जैसा कि आप देख सकते हैं, कमांड-लाइन तर्कों में स्क्रिप्ट नाम शामिल है लेकिन दुभाषिया नाम नहीं। इस अर्थ में, पायथन स्क्रिप्ट को निष्पादन योग्य मानता है । यदि आपको निष्पादन योग्य (इस मामले में अजगर) का नाम जानने की आवश्यकता है, तो आप उपयोग कर सकते हैं sys.executable।
आप उन उदाहरणों से देख सकते हैं कि उन तर्कों को प्राप्त करना संभव है जिनमें रिक्त स्थान होते हैं यदि उपयोगकर्ता ने उद्धरणों में संलग्न तर्कों के साथ स्क्रिप्ट को आमंत्रित किया है, तो आपको जो मिलता है वह तर्कों की सूची है जैसा कि उपयोगकर्ता द्वारा आपूर्ति की गई है।
अब आपके पायथन कोड में, आप अपने प्रोग्राम में इनपुट के रूप में स्ट्रिंग्स की इस सूची का उपयोग कर सकते हैं। चूंकि सूचियाँ शून्य-आधारित पूर्णांकों द्वारा अनुक्रमित की जाती हैं, आप सूची [0] सिंटैक्स का उपयोग करके अलग-अलग आइटम प्राप्त कर सकते हैं। उदाहरण के लिए, स्क्रिप्ट नाम पाने के लिए:
script_name = sys.argv[0] # this will always work.
हालांकि दिलचस्प है, आपको अपने स्क्रिप्ट नाम को जानने की आवश्यकता शायद ही हो। फ़ाइल नाम के लिए स्क्रिप्ट के बाद पहला तर्क प्राप्त करने के लिए, आप निम्न कार्य कर सकते हैं:
filename = sys.argv[1]
यह एक बहुत ही सामान्य उपयोग है, लेकिन ध्यान दें कि यह एक IndexError के साथ विफल हो जाएगा यदि कोई तर्क नहीं दिया गया था।
इसके अलावा, पायथन आपको एक सूची के एक स्लाइस का संदर्भ देता है, इसलिए केवल उपयोगकर्ता द्वारा दिए गए तर्कों की एक और सूची प्राप्त करने के लिए (लेकिन स्क्रिप्ट नाम के बिना), आप कर सकते हैं
user_args = sys.argv[1:] # get everything after the script name
इसके अतिरिक्त, पायथन आपको चर नामों के लिए आइटम का एक क्रम (सूचियों सहित) असाइन करने की अनुमति देता है। इसलिए यदि आप उपयोगकर्ता से हमेशा दो तर्कों की आपूर्ति करने की अपेक्षा करते हैं, तो आप उन तर्कों (जैसे तार) को दो चर में निर्दिष्ट कर सकते हैं:
user_args = sys.argv[1:]
fun, games = user_args # len(user_args) had better be 2
इसलिए, आपके विशिष्ट प्रश्न का उत्तर देने के लिए, प्रश्न में स्क्रिप्ट को दिए sys.argv[1]गए पहले कमांड-लाइन तर्क (ए string) के रूप में प्रतिनिधित्व करता है । यह इनपुट के लिए संकेत नहीं देगा, लेकिन यह इंडेक्सइर्र के साथ विफल होगा यदि स्क्रिप्ट नाम के बाद कमांड-लाइन पर कोई तर्क नहीं दिया जाता है।