%sপাইথন মানে কী ? এবং নিম্নলিখিত বিট কোডটি কী করে?
এই ক্ষেত্রে...
if len(sys.argv) < 2:
sys.exit('Usage: %s database-name' % sys.argv[0])
if not os.path.exists(sys.argv[1]):
sys.exit('ERROR: Database %s was not found!' % sys.argv[1])
%sপাইথন মানে কী ? এবং নিম্নলিখিত বিট কোডটি কী করে?
এই ক্ষেত্রে...
if len(sys.argv) < 2:
sys.exit('Usage: %s database-name' % sys.argv[0])
if not os.path.exists(sys.argv[1]):
sys.exit('ERROR: Database %s was not found!' % sys.argv[1])
উত্তর:
এটি একটি স্ট্রিং ফর্ম্যাটিং সিনট্যাক্স (এটি এটি সি থেকে ধার করে)।
দয়া করে "পাইফর্ম্যাট" দেখুন :
পাইথন স্ট্রিংগুলিতে ফর্ম্যাট করা মানগুলিকে সমর্থন করে। যদিও এটি খুব জটিল অভিব্যক্তিগুলি অন্তর্ভুক্ত করতে পারে তবে সর্বাধিক প্রাথমিক ব্যবহার হ'ল
%sস্থানধারক সহ একটি স্ট্রিংয়ে মান সন্নিবেশ করানো।
সম্পাদনা করুন: এখানে একটি খুব সহজ উদাহরণ:
#Python2
name = raw_input("who are you? ")
print "hello %s" % (name,)
#Python3+
name = input("who are you? ")
print("hello %s" % (name,))
%sটোকেন আমাকে সন্নিবেশ করতে (এবং সম্ভাব্য বিন্যাস) একটি স্ট্রিং পারেন। লক্ষ্য করুন যে %sটোকেনটি %চিহ্নটির পরে স্ট্রিংয়ে যা যা তা দ্বারা প্রতিস্থাপিত হয়েছে । একটি নীতিতে একাধিক স্ট্রিং sertedোকানো এবং ফর্ম্যাট করা যায় তা বোঝাতে আমি এখানেও একটি টিউপল ব্যবহার করছি (যখন আপনার কেবল একটি টিউপল ব্যবহার করে একটি স্ট্রিং alচ্ছিক)।
str.formatপদ্ধতির পক্ষে অবনতিযুক্ত ।
(name,), এবং শুধু না name?
অ্যান্ড্রু এর উত্তর ভাল।
এবং আপনাকে আরও কিছুটা সাহায্য করতে, আপনি কীভাবে এক স্ট্রিংয়ে একাধিক বিন্যাস ব্যবহার করেন তা এখানে
"Hello %s, my name is %s" % ('john', 'mike') # Hello john, my name is mike".
আপনি যদি স্ট্রিংয়ের পরিবর্তে ইনট ব্যবহার করছেন তবে% s এর পরিবর্তে% d ব্যবহার করুন।
"My name is %s and i'm %d" % ('john', 12) #My name is john and i'm 12
%sপূর্ণসংখ্যার উপর ব্যবহার করেন তবে এটি কেবল একটি স্ট্রিংয়ে রূপান্তরিত হবে।
print('This number will be padded with 4 zeros: %05d ' % 1)- এই কাজ করবে। print('This number will be padded with 4 zeros: %05s ' % 1)- এটি `
formatপাইথন ২.6 এ পদ্ধতিটি চালু হয়েছিল। এটি আরও সক্ষম এবং ব্যবহার করা খুব বেশি কঠিন নয়:
>>> "Hello {}, my name is {}".format('john', 'mike')
'Hello john, my name is mike'.
>>> "{1}, {0}".format('world', 'Hello')
'Hello, world'
>>> "{greeting}, {}".format('world', greeting='Hello')
'Hello, world'
>>> '%s' % name
"{'s1': 'hello', 's2': 'sibal'}"
>>> '%s' %name['s1']
'hello'
%sপাইথনের স্ট্রিং ফর্ম্যাটিং ক্ষমতা ব্যবহার করার সময় একটি রূপান্তর ধরণের স্ট্রিং নির্দেশ করে। আরও নির্দিষ্টভাবে, ফাংশনটি %sব্যবহার করে একটি নির্দিষ্ট মানটিকে স্ট্রিংয়ে রূপান্তর করে str()। এটি %rরূপান্তর ধরণের সাথে তুলনা করুন যা repr()মান রূপান্তরকরণের জন্য ফাংশনটি ব্যবহার করে ।
স্ট্রিং ফর্ম্যাটিংয়ের জন্য দস্তাবেজগুলি একবার দেখুন ।
%sএবং %dস্ট্রিং / দশমিক / ভাসমান ইত্যাদি ফর্ম্যাটের জন্য ফর্ম্যাট স্পেসিফায়ার বা স্থানধারক
সর্বাধিক সাধারণ ব্যবহৃত ফর্ম্যাট নির্দিষ্টকরণকারী:
%s : স্ট্রিং
%d : দশমিক
%f : ভাসা
স্ব বর্ণনামূলক কোড:
name = "Gandalf"
extendedName = "the Grey"
age = 84
IQ = 149.9
print('type(name):', type(name)) #type(name): <class 'str'>
print('type(age):', type(age)) #type(age): <class 'int'>
print('type(IQ):', type(IQ)) #type(IQ): <class 'float'>
print('%s %s\'s age is %d with incredible IQ of %f ' %(name, extendedName, age, IQ)) #Gandalf the Grey's age is 84 with incredible IQ of 149.900000
#Same output can be printed in following ways:
print ('{0} {1}\'s age is {2} with incredible IQ of {3} '.format(name, extendedName, age, IQ)) # with help of older method
print ('{} {}\'s age is {} with incredible IQ of {} '.format(name, extendedName, age, IQ)) # with help of older method
print("Multiplication of %d and %f is %f" %(age, IQ, age*IQ)) #Multiplication of 84 and 149.900000 is 12591.600000
#storing formattings in string
sub1 = "python string!"
sub2 = "an arg"
a = "i am a %s" % sub1
b = "i am a {0}".format(sub1)
c = "with %(kwarg)s!" % {'kwarg':sub2}
d = "with {kwarg}!".format(kwarg=sub2)
print(a) # "i am a python string!"
print(b) # "i am a python string!"
print(c) # "with an arg!"
print(d) # "with an arg!"
আপনার দ্বিতীয় প্রশ্নের উত্তরে: এই কোডটি কী করে? ...
এটি পাইথন স্ক্রিপ্টের জন্য মোটামুটি স্ট্যান্ডার্ড ত্রুটি-চেকিং কোড যা কমান্ড-লাইন আর্গুমেন্টগুলি গ্রহণ করে।
সুতরাং প্রথম ifবিবৃতিটি অনুবাদ করে: আপনি যদি আমাকে কোনও যুক্তি না দিয়ে থাকেন তবে আমি আপনাকে বলতে যাচ্ছি যে কীভাবে ভবিষ্যতে আপনি আমাকে যুক্তিটি পাস করবেন, উদাহরণস্বরূপ আপনি এই অন-স্ক্রিনটি দেখতে পাবেন:
Usage: myscript.py database-name
পরবর্তী ifবিবৃতিটি পরীক্ষা করে দেখেছিল যে আপনি স্ক্রিপ্টটিতে যে 'ডাটাবেস-নাম' দিয়েছেন তা আসলে ফাইল সিস্টেমে রয়েছে কি না। যদি তা না হয় তবে আপনি এই জাতীয় বার্তা পাবেন:
ERROR: Database database-name was not found!
ডকুমেন্টেশন থেকে :
আরজিভি [0] হ'ল স্ক্রিপ্টের নাম (এটি একটি সম্পূর্ণ পথের নাম কিনা তা অপারেটিং সিস্টেম নির্ভর করে)। কমান্ডটি যদি অনুবাদকের কাছে -c কমান্ড লাইন বিকল্পটি ব্যবহার করে কার্যকর করা হয়, argv [0] '-c' স্ট্রিংয়ে সেট করা আছে। পাইথন ইন্টারপ্রেটারের কাছে যদি কোনও স্ক্রিপ্টের নাম পাস না করা হয়, তবে argv [0] খালি স্ট্রিং।
%অপারেটর আরো শক্তিশালী পক্ষে অবচিতstr.formatপদ্ধতি, দেখতে PEP-3101 ।