Sejauh yang saya tahu, Python memiliki 3 cara untuk mengetahui sistem operasi apa yang sedang berjalan:
os.name
sys.platform
platform.system()
Mengetahui informasi ini sering kali berguna dalam impor bersyarat, atau menggunakan fungsionalitas yang berbeda antar platform (misalnya time.clock()
di Windows vs time.time()
di UNIX).
Pertanyaan saya adalah, mengapa 3 cara berbeda untuk melakukan ini? Kapan satu cara harus digunakan dan bukan yang lain? Cara manakah yang 'terbaik' (paling tahan masa depan atau paling tidak mungkin secara tidak sengaja mengecualikan sistem tertentu tempat program Anda sebenarnya dapat berjalan)?
Sepertinya sys.platform
lebih spesifik daripada os.name
, memungkinkan Anda untuk membedakan win32
dari cygwin
(sebagai lawan dari hanya nt
), dan linux2
dari darwin
(sebagai lawan dari hanya posix
). Tetapi jika demikian, bagaimana dengan perbedaan antara sys.platform
dan platform.system()
?
Misalnya, mana yang lebih baik, ini:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
atau ini? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Untuk saat ini saya akan bertahan sys.platform
, jadi pertanyaan ini tidak terlalu mendesak, tetapi saya akan sangat berterima kasih atas beberapa klarifikasi mengenai hal ini.
sys.platform.startswith('linux')
alih-alihsys.platform == 'linux2'
untuk kompatibilitas di masa mendatang