Bildiğim kadarıyla, Python'un hangi işletim sistemi üzerinde çalıştığını bulmanın 3 yolu vardır:
os.name
sys.platform
platform.system()
Bu bilgilerin bilinmesi, koşullu içe aktarmalarda veya platformlar arasında farklılık gösteren işlevselliklerde (örneğin time.clock()
, Windows ve time.time()
UNIX'te) yararlıdır .
Sorum şu, neden bunu yapmanın 3 farklı yolu var? Ne zaman bir yol kullanılmalı, diğeri değil? Hangi yol 'en iyi' (geleceğe dönük en iyisi veya programınızın gerçekten çalışabileceği belirli bir sistemi yanlışlıkla dışlama olasılığı en düşük)?
Öyle görünüyor ki sys.platform
daha spesifiktir os.name
sen ayırt sağlayan win32
den cygwin
(sadece karşıt olarak nt
) ve linux2
gelen darwin
(sadece karşıt olarak posix
). Ama eğer öyleyse, sys.platform
ve arasındaki fark ne olacak platform.system()
?
Örneğin, hangisi daha iyi, bu:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
veya bu? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Şimdilik sadık kalacağım sys.platform
, bu yüzden bu soru özellikle acil değil, ancak bununla ilgili bazı açıklamalar için çok minnettar olurum.
sys.platform.startswith('linux')
yerine kullanınsys.platform == 'linux2'