ব্যবহারকারী ইনপুট এবং কমান্ড লাইন আর্গুমেন্ট [বন্ধ]


525

আমার কীভাবে পাইথন স্ক্রিপ্ট রয়েছে যা ক) ব্যবহারকারী ইনপুট গ্রহণ করতে পারে এবং আমি কীভাবে এটি তৈরি করব খ) কমান্ড লাইন থেকে চালিত হলে আর্গুমেন্টে পড়তে পারি?


9
উত্তরটি পাইথনের আপনার সংস্করণের উপর নির্ভর করবে। পাইথন ৩.x এটি পাইথন ২.7 এর থেকে কিছুটা আলাদাভাবে করেছে
স্ট্যাম্পওয়ার্ড ২12

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(পাইথন ২.7 থেকে অবচয়, argparseপরিবর্তে ব্যবহার করুন) এবং getopt। আপনি যদি কেবল নিজের স্ক্রিপ্টে ফাইলগুলি ইনপুট করতে চান তবে এর শক্তিটি দেখুন fileinput

পাইথন গ্রন্থাগার রেফারেন্স আপনার বন্ধু।


71
raw_inputinputপাইথন ৩.x এ নতুন নামকরণ করা হয়েছিল - এখানে ডকুমেন্টেশন
22:49


1
ধরুন, sys.argv টিকে আর্গুমেন্ট নম্বর সরবরাহ করা দরকার, যদি ধরুন আপনি কোনও মান যেমন একটি প্যারামিটারটি পাস করেন। পাইথন ফাইল_নাম.পি 2017-02-10 এবং আপনি তারিখটি ব্যবহার করতে চান, এটি sys.argv হওয়া উচিত [1] অন্যথায় এটি একটি তালিকা হবে [ফাইল_নাম.পি, 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
আপনাকে প্রিন্ট সংমিশ্রণে আরআর () ব্যবহার করতে হবে না কারণ সমস্ত প্রবেশ করা ডেটা ডিফল্ট (এমনকি সংখ্যার) দ্বারা টাইপ (আইএনএন) হবে।
গৌজন

202

raw_inputপাইথন 3.x এ আর উপলব্ধ নেই। তবে raw_inputনামকরণ করা হয়েছিল input, সুতরাং একই কার্যকারিতা বিদ্যমান।

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

পরিবর্তনের ডকুমেন্টেশন


24
পাইথন ২.7-এ ইনপুট () মানগুলিকে স্ট্রিংয়ে রূপান্তর করে না। সুতরাং আপনি যদি এটির চেষ্টা করে থাকেন: ইনপুট_ভেরিয়েবল ১ = ইনপুট ("প্রথম শব্দ বা বাক্যটি লিখুন:"), আপনি একটি ত্রুটি পাবেন: ট্রেসব্যাক (সর্বশেষতম কল শেষ): রিটার্ন ইভাল (কাঁচা_পিন্ড (প্রম্পট)) ফাইল "<স্ট্রিং> ", লাইন 1, <মডুল> নেম এররে: নাম 'খারাপ' সংজ্ঞায়িত করা হয়নি
IgorGanapolsky

ইনপুট_ওয়ার = ইনপুট ("প্রস্থান করতে 'ই' এবং 'এন্টার' টিপুন:") নাম-এরর: নাম 'ই' সংজ্ঞায়িত করা হয়নি আমি পাইথন 2.5 ব্যবহার করছি। কিভাবে, আমি এই ত্রুটি কাটিয়ে উঠতে পারি।
দীপক দুবে

পাইথন ২.7 নিয়ে আসা নিম্নলিখিত আমদানি ব্যবহার করে আপনি ট্রেসব্যাক বিজ্ঞপ্তি এড়াতে পারবেন:import fileinput result=[] for line in fileinput.input(): result.append(line)
স্টিফান গ্রুয়েনওয়াল্ড

এখানে ইতিহাস এবং যুক্তি সম্পর্কিত আরও কিছু রয়েছে: পাইথন.অর্গ
জুলিয়ান

33

কমান্ড লাইন আর্গুমেন্ট প্রক্রিয়া করার সর্বোত্তম উপায় হল argparseমডিউল।

ব্যবহার করুন raw_input()ব্যবহারকারীর ইনপুট জন্য। আপনি যদি আমদানি করেন তবে readline moduleআপনার ব্যবহারকারীদের লাইন সম্পাদনা এবং ইতিহাস থাকবে।


যদিও পঠন বাক্সটি কেবল ইউনিক্সে বাক্সের বাইরে রয়েছে।
22:33

5
আরগপারস হ'ল নতুন অপ্ট পার্স
নীলস বম

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

কনসোল / টার্মিনাল থেকে ইনপুট দেওয়ার জন্য 'কাঁচা-ইনপুট' ব্যবহার করুন।

যদি আপনি কেবল কোনও ফাইলের নাম বা যেমন যেমন কোনও কমান্ড লাইন আর্গুমেন্ট চান

$ 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

আপনি যদি পাইথন <২. running চালাচ্ছেন, আপনার অপ্ট পার্স প্রয়োজন , যা ডক ব্যাখ্যা করেছেন যে কমান্ড লাইন আর্গুমেন্টগুলিতে একটি ইন্টারফেস তৈরি করবে যা আপনার অ্যাপ্লিকেশনটি চালিত হওয়ার সময় ডাকা হবে।

যাইহোক, পাইথন in2.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.2২.7, কমান্ড লাইন আর্গুমেন্টগুলি প্রক্রিয়াকরণের জন্য এখন আরগপারস রয়েছে


1
আরগপার্সেও ব্যাকপোর্ট করা হয়েছে এবং পাইপিআই পিপিআইপিথন.আর.পি.পি.আই.
সেবাস্তিয়ান ব্লাস্ক

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)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.