কমান্ড লাইনে নানা ধরনের কাজ করার জন্য সচারচর ব্যবহৃত পাইথন ফাংশন, ক্লাস এবং মডিউল নিয়ে আলোচনা করবো আমরা ।
পাইথনে প্রোগ্রামিং করতে করতে এমন অনেক সময় আসবে যখন আমাদের প্রয়োজন পড়বে ব্যবহারকারীর কাছ থেকে কিছু ইনপুট নেওয়া । এজন্য আমরা 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 লিস্টে জমা করে । একটি উদাহরন দেখে নেই:
main.py ফাইলের কন্টেন্ট:
import sys
print sys.argvটার্মিনালে রান করলাম এভাবে:
$ python main.py 1 2 3এখানে 1, 2 এবং 3 প্রত্যেকে একেকটি কমান্ড লাইন আর্গুমেন্ট ।
আউটপুট:
['main.py', '1', '2', '3']
sys.argv এর প্রথম আইটেমটি হয় ঐ ফাইল নেইম । এরপর কমান্ড লাইন আর্গুমেন্টগুলো থাকে একটার পর একটা ।