SORU
29 Aralık 2010, ÇARŞAMBA


Kullanmak için os.adı, sys.platform veya platform.sistem?

Bildiğim kadarıyla, Python sürümünü öğrenmenin 3 yolu vardır:

  1. os.name
  2. sys.platform
  3. platform.system()

Bilgi koşullu ithalatta genellikle yararlıdır bunu bilerek, ya da platformlar (Windows v. s. örneğin time.clock() arasında farklı işlevi kullanarak UNIX time.time()).

Benim sorum, 3 farklı yolu neden bunu yapıyor? Bir şekilde kullanılmalıdır ve bir başka değil mi? Ne tarafta 'en iyi (en geleceğe yönelik veya yanlışlıkla program aslında üzerinde çalışacak olan özel bir sistem dışlamak için en az)'?

Göründüğü gibi sys.platform daha çok belli os.name izin için ayırt win32 cygwin (karşıt olarak sadece nt) ve linux2 darwin (karşıt olarak sadece posix). Ama eğer bu olursa, ne sys.platform platform.system() arasındaki fark?

Hangisi daha iyidir, örneğin, bu:

import sys
if sys.platform == 'linux2':
    # Do Linux-specific stuff

ya bu? :

import platform
if platform.system() == 'Linux':
    # Do Linux-specific stuff

Şimdilik bu soru, özellikle acil değil sys.platform, sadık olacağım, ama bazı Açıklama Bu ilgili için çok minnettar olacaktır.

CEVAP
26 Temmuz 2012, PERŞEMBE


Kaynak kodu içine daldı.

sys.platform os.name çıkış derleme zamanında belirlenir. platform.system() zamanında sistem türünü belirler.

  • sys.platform bir derleyici oluşturmak yapılandırma sırasında tanımlamak belirtildi.
  • Bazı os özel modüller kullanılabilir olup olmadığını os.name (posix, nt, örneğin...) çekler
  • platform.system() aslında uname ve potansiyel olarak diğer bazı işlevleri zamanında sistem türünü belirlemek için çalışır.

Benim önerim, kullanın os.name olup olmadığını kontrol etmek için bir posıx uyumlu sistem kullanım sys.platform olup olmadığını kontrol etmek için bir linux, özellik listesi, darwin, atheos, ne olursa olsun, ve kullanmak platform.system(), madem inanmıyorsun diğer kaynaklar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • ::..ηєѕѕ мιχ..::

    ::..ηєѕѕ

    15 Aralık 2006
  • spyib

    spyib

    9 Ocak 2007