Skip to content

Latest commit

 

History

History
54 lines (39 loc) · 4.09 KB

command-line.md

File metadata and controls

54 lines (39 loc) · 4.09 KB

কমান্ড লাইন

কমান্ড লাইনে নানা ধরনের কাজ করার জন্য সচারচর ব্যবহৃত পাইথন ফাংশন, ক্লাস এবং মডিউল নিয়ে আলোচনা করবো আমরা ।

ব্যবহারকারীর ইনপুট নেওয়া

পাইথনে প্রোগ্রামিং করতে করতে এমন অনেক সময় আসবে যখন আমাদের প্রয়োজন পড়বে ব্যবহারকারীর কাছ থেকে কিছু ইনপুট নেওয়া । এজন্য আমরা raw_input() ফাংশনটি ব্যবহার করতে পারি:

print "What is your name?"
name = raw_input()
print "You said your name is %s" % name

মজার ব্যাপার হচ্ছে এই raw_input ফাংশনটির সাথে চাইলে আমাদের প্রশ্নটিও এভাবে পাস করে দিতে পারি:

name = raw_input("What is your name?")
print "You said your name is %s" % name

এই ফাংশানটি ইউজার ইনপুট স্ট্রিং হিসেবে পাস করবে । সুতরাং আমরা যদি সংখ্যা নিতে চাই তাহলে এটাকে পরিবর্তন করে নিতে হবে:

number1 = int(raw_input("N1:"))
number2 = int(raw_input("N2:"))
print number1 + number2

এখানে আমরা int() ফাংশনটি ব্যবহার করে স্ট্রিং ভ্যালু থেকে এটিকে ইন্টিজারে কনভার্ট করে নিয়েছি ।

পাইথনে ইনপুট নেওয়ার জন্য আরেকটি ফাংশন রয়েছে - input() কিন্তু সমস্যা হচ্ছে, raw_input() যেখানে স্ট্রিং ভ্যালু আশা করে, input() সেখানে পাইথন কোড আশা করে । অর্থাৎ যেই ইনপুট দেওয়া হবে, পাইথন তা কোড হিসেবে বিবেচনা করে আউটপুট দেখাবে । ইউজার যদি ইচ্ছা করে ক্ষতিকর কোড টাইপ করে দেন তাহলে এটার মাধ্যমে সিস্টেমের ক্ষতিসাধন করা সম্ভব তাই এটার ব্যবহার অনুৎসাহিত করা হয় ।

কমান্ড লাইন আর্গুমেন্টস এবং sys.argv

আমরা পাইথন প্রোগ্রাম রান করার সময় কিছু অপশন বা আর্গুমেন্ট পাস করতে পারি । এই অপশন বা আর্গুমেন্টগুলো আমরা ফাইল নেইমের পরে একটা একটা করে স্পেইস দিয়ে আলাদা করে দিতে পারি । পাইথন এই আর্গুমেন্টগুলোকে sys মডিউলের argv লিস্টে জমা করে । একটি উদাহরন দেখে নেই:

main.py ফাইলের কন্টেন্ট:

import sys
print sys.argv

টার্মিনালে রান করলাম এভাবে:

$ python main.py 1 2 3

এখানে 1, 2 এবং 3 প্রত্যেকে একেকটি কমান্ড লাইন আর্গুমেন্ট ।

আউটপুট:

['main.py', '1', '2', '3']

sys.argv এর প্রথম আইটেমটি হয় ঐ ফাইল নেইম । এরপর কমান্ড লাইন আর্গুমেন্টগুলো থাকে একটার পর একটা ।