O ile wiem, Python ma 3 sposoby sprawdzenia, na jakim systemie operacyjnym działa:
os.namesys.platformplatform.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.platformjest bardziej szczegółowe niż os.nameumożliwienie odróżnienia win32od cygwin(w przeciwieństwie do sprawiedliwego nt) i linux2od darwin(w przeciwieństwie do sprawiedliwego posix). Ale jeśli tak jest, to co z różnicą między sys.platformi 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