Python'daki işletim sistemini nasıl kontrol ederim?


148

İşletim sistemini kontrol etmek istiyorum (betiğin çalıştığı bilgisayarda).

os.system('uname -o')Linux'ta kullanabileceğimi biliyorum , ama bana konsolda bir mesaj veriyor ve bir değişkene yazmak istiyorum.

Komut dosyasının Mac, Windows veya Linux olup olmadığını söyleyebilmesi uygun olacaktır. Nasıl kontrol edebilirim?



Yanıtlar:


287

Şunları kullanabilirsiniz sys.platform:

from sys import platform
if platform == "linux" or platform == "linux2":
    # linux
elif platform == "darwin":
    # OS X
elif platform == "win32":
    # Windows...

sys.platformdaha küçük bir ayrıntı düzeyine sahiptir sys.name.

Geçerli değerler için belgelere bakın .

Ayrıca “Hangi işletim sisteminde çalışıyorum?” Yanıtına da bakın.


8
Cygwin içinde, bu döndüren Not "cygwin"değil "win32"birisi tahmin edebileceğiniz gibi.
Michał Bentkowski

21
Teşekkürler. Linux ve linux2 arasındaki fark nedir?
Tharindu Rusira

1
BSD için çıktı ne olurdu?
galois

1
Python 3.3'ün "linux2"artık olası bir değeri olmadığından platform(doğrulama için bağlantılı belgelere bakın) ve bu nedenle yalnızca Python 3.3 ve sonraki sürümlerini desteklemeniz gerekiyorsa `` veya platform == "linux2" `yan tümcesini güvenle silebilirsiniz. ilk koşul.
Mark Amery

23

"Linux", "Windows" veya "Darwin" (Mac) dışında hangi platformda olduğunuzu bilmek istiyorsanız, daha hassas bir şekilde kullanmalısınız:

>>> import platform
>>> platform.system()
'Linux'  # or 'Windows'/'Darwin'

platform.systemFonksiyon kullanır unameiçten.


1
Bu çözümü gibi ama dokümanlardan buna dönecektir belirtiyor işaret etmek istiyorum Linux, Windows, Javaveya boş bir dize. devdocs.io/python~3.7/library/platform#platform.system
Brandon Benefield

2
@BrandonBenefield, numaralandırma olası değerlere bir örnektir. Apple cihazlarda “Darwin” i döndürüyor.
Laurent LAPORTE

15

Kullandığınız işletim sistemi hakkında oldukça kaba bir fikir edinebilirsiniz sys.platform.

Bu bilgilere sahip olduktan sonra, benzer bir şeyi çağırmanın os.uname()daha spesifik bilgi toplamak için uygun olup olmadığını belirlemek için kullanabilirsiniz . Unix benzeri işletim sistemlerinde Python Sistem Bilgileri veya Windows için pywin32 gibi bir şey de kullanabilirsiniz .

İşletim sistemini önemsemeden daha derinlemesine inceleme yapmak istiyorsanız psutil de var .


6

Daha ayrıntılı bilgi platformmodülde mevcuttur .


Does platformmodül üzerinde herhangi bir avantaj var sys.platform? Hangi yaklaşımı ne zaman kullanmak isterim?
matth

@matth: Modülden daha ayrıntılı ve yapılandırılmış bilgiler alırsınız platform. Dokümantasyon için bağlantıyı tıklamanız yeterlidir.
Sven Marnach

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.