उपयोगकर्ता इनपुट और कमांड लाइन तर्क [बंद]


525

मेरे पास एक पायथन स्क्रिप्ट कैसे है जो a) उपयोगकर्ता इनपुट को स्वीकार कर सकता है और मैं इसे कैसे बना सकता हूं) कमांड लाइन से चलाने पर तर्कों में पढ़ा जाता है?


9
जवाब आपके पायथन के संस्करण पर निर्भर करेगा। Python 3.x इसे Python 2.7 की तुलना में थोड़ा अलग करता है
स्टीमपॉवर

4
और पायथन 2.7 भी 2.7 से पहले के संस्करणों की तुलना में इसे थोड़ा अलग करता है, जैसे कि argparseइसके बजाय optparse
हैलोगूडीबाई

जवाबों:


501

उपयोगकर्ता इनपुट को पढ़ने के लिए कोशिश कर सकते हैं मॉड्यूल आसानी से एक मिनी कमांड लाइन दुभाषिया (मदद ग्रंथों और स्वतः पूर्ण के साथ) बनाने और के लिए ( उपयोगकर्ता से टेक्स्ट की पंक्ति को पढ़ने के लिए अजगर 3+ के लिए)।cmdraw_inputinput

text = raw_input("prompt")  # Python 2
text = input("prompt")  # Python 3

कमांड लाइन इनपुट में हैं sys.argv। इसे अपनी स्क्रिप्ट में आज़माएँ:

import sys
print (sys.argv)

कमांड लाइन विकल्प पार्स करने के लिए दो मॉड्यूल हैं: optparse(पायथन 2.7 के बाद से पदावनत, argparseइसके बजाय उपयोग करें ) और getopt। यदि आप केवल अपनी स्क्रिप्ट में फ़ाइलों को इनपुट करना चाहते हैं, तो इसकी शक्ति को निहारें fileinput

अजगर पुस्तकालय संदर्भ अपने दोस्त है।


71
raw_inputइसका नाम बदलकर inputअजगर 3.x - दस्तावेज़ीकरण रखा गया
भाप से चलने वाली

1
इसके लिए मेरा पसंदीदा स्रोत: tutorialspoint.com/python/python_command_line_arguments.htm और यह बहुत अच्छा लग रहा है: cyberciti.biz/faq/python-command-line-arguments-argv-example
जॉर्डन स्टीवर्ट

1
sys.argv को तर्क संख्या के साथ आपूर्ति करने की आवश्यकता होती है, यदि मान लें कि आप मान के रूप में एक पैरामीटर पास करते हैं। python file_name.py 2017-02-10 और आप तारीख का उपयोग करना चाहते हैं, यह sys.argv [1] होना चाहिए अन्यथा यह एक सूची होगी जैसे कि [file_name.py, 2017-02-10]
अरविंद कृष्णकुमार

467
var = raw_input("Please enter something: ")
print "you entered", var

या अजगर 3 के लिए:

var = input("Please enter something: ")
print("You entered: " + var)

26
यह ध्यान दिया जाना चाहिए कि आपको आयात नहीं करना है raw_input, यह एक बिलियन फ़ंक्शन है।
डेनिस गोलोमेज़ोव

7
आपको प्रिंट कॉन्‍टेनेशन में str () का उपयोग करने की जरूरत नहीं है क्‍योंकि सभी दर्ज डेटा डिफॉल्ट रूप से str (ing) टाइप होंगे (सम संख्याएं)।
गौजॉन

202

raw_inputपाइथन 3.x में उपलब्ध नहीं है। लेकिन raw_inputनाम बदल दिया गया था input, इसलिए समान कार्यक्षमता मौजूद है।

input_var = input("Enter something: ")
print ("you entered " + input_var) 

परिवर्तन का दस्तावेजीकरण


24
पायथन 2.7 में, इनपुट () स्ट्रिंग्स के मानों को परिवर्तित नहीं करता है। इसलिए यदि आप ऐसा करने का प्रयास करते हैं: input_variable1 = इनपुट ("पहला शब्द या वाक्यांश दर्ज करें:"), तो आपको एक त्रुटि मिलेगी: Traceback (सबसे हाल ही में कॉल अंतिम): वापसी eval (raw_input (प्रॉम्प्ट)) फ़ाइल <string> ", पंक्ति 1, में <मॉड्यूल> NameError: नाम 'खराब' को परिभाषित नहीं किया गया है
इगोरगानपोलस्की

input_var = input ("प्रेस 'ई' और 'दर्ज करें' से बाहर निकलें:") नाम: नाम: 'ई' परिभाषित नहीं है मैं पायथन 2.5 का उपयोग कर रहा हूं। कैसे, मैं इस त्रुटि को दूर कर सकता हूं।
दीपक दुबे

आप निम्नलिखित आयात का उपयोग करके ट्रेसबैक नोटिस से बच सकते हैं जो पायथन 2.7 के साथ आता है:import fileinput result=[] for line in fileinput.input(): result.append(line)
स्टीफन ग्रुएनवाल्ड

यहाँ इतिहास और औचित्य अधिक है: python.org/dev/peps/pep-3111
Julian

33

कमांड लाइन तर्कों को संसाधित करने का सबसे अच्छा तरीका argparseमॉड्यूल है।

raw_input()उपयोगकर्ता इनपुट प्राप्त करने के लिए उपयोग करें । यदि आप आयात करते हैं तो readline moduleआपके उपयोगकर्ताओं के पास लाइन संपादन और इतिहास होगा।


हालांकि बॉक्स से बाहर केवल यूनिक्स पर ही उपलब्ध है।
हेजहोग

5
Argparse नया ऑप्टपर्स है
Niels Bom

18

inputफ़ंक्शन का उपयोग न करने के लिए सावधान रहें , जब तक कि आप नहीं जानते कि आप क्या कर रहे हैं। इसके विपरीत raw_input, inputकिसी भी अजगर अभिव्यक्ति को स्वीकार करेगा, इसलिए यह थोड़े जैसा हैeval


15

यह सरल प्रोग्राम आपको यह समझने में मदद करता है कि कमांड लाइन से उपयोगकर्ता इनपुट कैसे फीड करें और अमान्य तर्क पारित करने में मदद दिखाएं।

import argparse
import sys

try:
     parser = argparse.ArgumentParser()
     parser.add_argument("square", help="display a square of a given number",
                type=int)
    args = parser.parse_args()

    #print the square of user input from cmd line.
    print args.square**2

    #print all the sys argument passed from cmd line including the program name.
    print sys.argv

    #print the second argument passed from cmd line; Note it starts from ZERO
    print sys.argv[1]
except:
    e = sys.exc_info()[0]
    print e

1) 5 के वर्गमूल को खोजने के लिए

C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5

2) संख्या के अलावा अन्य अमान्य तर्क पारित करना

C:\Users\bgh37516\Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
<type 'exceptions.SystemExit'>

10

कंसोल / टर्मिनल से इनपुट के लिए 'raw_input' का उपयोग करें।

अगर आप बस एक कमांड लाइन तर्क चाहते हैं जैसे फ़ाइल नाम या कुछ और

$ python my_prog.py file_name.txt

तो आप sys.argv का उपयोग कर सकते हैं ...

import sys
print sys.argv

sys.argv एक सूची जहां 0, प्रोग्राम का नाम है ऊपर के उदाहरण sys.argv में तो है [1] "file_name.txt" होगा

यदि आप कमांड लाइन विकल्पों पर पूर्ण होना चाहते हैं तो ऑप्टपर्स मॉड्यूल का उपयोग करें।

PEV


9

यदि आप पायथन <2.7 चला रहे हैं, तो आपको ऑप्टपर्स की आवश्यकता है , जैसा कि डॉक्टर बताते हैं कि कमांड लाइन तर्क के लिए एक इंटरफ़ेस बनाएगा जिसे आपके आवेदन के चलने पर बुलाया जाता है।

हालांकि, पायथन .72.7 में, ऑप्टपर्स को पदावनत कर दिया गया है, और ऊपर दिखाए गए एर्गपर्स के साथ बदल दिया गया था । डॉक्स से एक त्वरित उदाहरण ...

निम्नलिखित कोड एक पायथन प्रोग्राम है जो पूर्णांकों की सूची लेता है और योग या अधिकतम का उत्पादन करता है:

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print args.accumulate(args.integers)


6

अगर यह 3.x संस्करण है तो बस उपयोग करें:

variantname = input()

उदाहरण के लिए, आप 8 इनपुट करना चाहते हैं:

x = input()
8

x 8 के बराबर होगा, लेकिन अगर आप इसे अन्यथा परिभाषित करते हैं तो यह एक स्ट्रिंग होने जा रहा है।

तो आप कन्वर्ट कमांड का उपयोग कर सकते हैं, जैसे:

a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07

3

पायथन 2 में:

data = raw_input('Enter something: ')
print data

पायथन 3 में:

data = input('Enter something: ')
print(data)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.