O ile wiem, Python ma 3 sposoby sprawdzenia, na jakim systemie operacyjnym działa:
os.name
sys.platform
platform.system()
Znajomość tych informacji jest często przydatna przy importach warunkowych lub przy korzystaniu z funkcji różniących się między platformami (np. W time.clock()
systemie Windows i time.time()
UNIX).
Moje pytanie brzmi: dlaczego 3 różne sposoby to zrobić? Kiedy należy stosować jeden sposób, a nie inny? Który sposób jest „najlepszy” (najbardziej przyszłościowy lub najmniej skłonny do przypadkowego wykluczenia konkretnego systemu, na którym Twój program może faktycznie działać)?
Wydaje się, że sys.platform
jest bardziej szczegółowe niż os.name
umożliwienie odróżnienia win32
od cygwin
(w przeciwieństwie do sprawiedliwego nt
) i linux2
od darwin
(w przeciwieństwie do sprawiedliwego posix
). Ale jeśli tak jest, to co z różnicą między sys.platform
i platform.system()
?
Na przykład, co jest lepsze, to:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
albo to? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Na razie będę się trzymał sys.platform
, więc to pytanie nie jest szczególnie pilne, ale byłbym bardzo wdzięczny za wyjaśnienia w tej sprawie.
sys.platform.startswith('linux')
zamiastsys.platform == 'linux2'
dla przyszłej kompatybilności