আমি লক্ষ করতে চাই যে পূর্ববর্তী উত্তরগুলি ব্যবহারকারীর জ্ঞান সম্পর্কে অনেক অনুমান করেছিল। এই উত্তরটি আরও টিউটোরিয়াল স্তরে প্রশ্নের উত্তর দেওয়ার চেষ্টা করে।
পাইথনের প্রতিটি অনুরোধের জন্য sys.argvকমান্ড-লাইনে আর্গুমেন্টগুলি (স্পেস দ্বারা পৃথক পৃথক) উপস্থাপন করা স্ট্রিংগুলির একটি তালিকা স্বয়ংক্রিয়ভাবে দেওয়া হয়। নামটি সি প্রোগ্রামিং কনভেনশন থেকে আসে যার মধ্যে আরজিভি এবং আরজিসি কমান্ড লাইনের যুক্তি উপস্থাপন করে।
আপনি পাইথনের সাথে পরিচিত হওয়ায় আপনি তালিকাগুলি এবং স্ট্রিংগুলি সম্পর্কে আরও জানতে চাইবেন, তবে এর মধ্যে, কয়েকটি জিনিস জানতে হবে।
আপনি কেবল একটি স্ক্রিপ্ট তৈরি করতে পারেন যা উপস্থাপন করার সাথে সাথে আর্গুমেন্টগুলি মুদ্রণ করে। এটি lenতালিকায় ফাংশনটি ব্যবহার করে আর্গুমেন্টের সংখ্যাও মুদ্রণ করে ।
from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
স্ক্রিপ্টটির জন্য পাইথন ২.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]
এটি একটি খুব সাধারণ ব্যবহার, তবে মনে রাখবেন যে কোনও যুক্তি সরবরাহ না করা থাকলে এটি একটি সূচিপত্রের সাথে ব্যর্থ হবে।
এছাড়াও, পাইথন আপনাকে তালিকার একটি স্লাইস রেফারেন্স করতে দেয়, যাতে কেবল ব্যবহারকারী-সরবরাহিত আর্গুমেন্টের (তবে স্ক্রিপ্টের নাম ছাড়াই) অন্য একটি তালিকা পেতে , আপনি এটি করতে পারেন
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) প্রশ্নের স্ক্রিপ্টে সরবরাহ করা। এটি ইনপুটটির জন্য প্রম্পট করবে না, তবে স্ক্রিপ্টের নাম অনুসরণ করে কমান্ড-লাইনে কোনও যুক্তি সরবরাহ না করা হলে এটি একটি সূচিপত্রের সাথে ব্যর্থ হবে।