যতদূর আমি জানি, পাইথনের 3 টি অপারেটিং সিস্টেমটি কী চলছে তা আবিষ্কার করার 3 টি উপায় রয়েছে:
os.name
sys.platform
platform.system()
এই তথ্যগুলি জানার জন্য প্রায়শই শর্তাধীন আমদানি, বা প্ল্যাটফর্মের মধ্যে পার্থক্যযুক্ত কার্যকারিতা (যেমন time.clock()
উইন্ডোজ বনাম time.time()
ইউএনআইএক্স এ) ব্যবহার করে কার্যকর হয়।
আমার প্রশ্ন হল, কেন এটি করার 3 টি ভিন্ন উপায়? কখন একটি উপায় ব্যবহার করা উচিত এবং অন্যটি নয়? কোন উপায়ে 'সেরা' (সবচেয়ে ভবিষ্যত-প্রমাণ বা আপনার প্রোগ্রামটি আসলে চালিত করতে পারে এমন কোনও সিস্টেম দুর্ঘটনাক্রমে বাদ দেওয়ার সম্ভাবনা রয়েছে)?
এটি দেখে মনে হচ্ছে sys.platform
চেয়ে বেশি নির্দিষ্ট os.name
, আপনি পার্থক্য করতে সক্ষম হবেন win32
থেকে cygwin
(শুধু বিরোধিতা nt
), এবং linux2
থেকে darwin
(শুধু বিরোধিতা posix
)। কিন্তু যদি তাই হয়, যে sys.platform
এবং এর মধ্যে পার্থক্য সম্পর্কে কি platform.system()
?
উদাহরণস্বরূপ, যা আরও ভাল এটি:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
অথবা এটা? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
আপাতত আমি আঁকড়ে থাকব sys.platform
, সুতরাং এই প্রশ্নটি বিশেষভাবে জরুরি নয়, তবে এই সম্পর্কে কিছু স্পষ্টতার জন্য আমি অত্যন্ত কৃতজ্ঞ হব।
sys.platform.startswith('linux')
পরিবর্তে ব্যবহার করুনsys.platform == 'linux2'