Bagaimana cara memeriksa sistem operasi dengan Python?


148

Saya ingin memeriksa sistem operasi (di komputer tempat skrip berjalan).

Saya tahu saya bisa menggunakan os.system('uname -o')di Linux, tetapi itu memberi saya pesan di konsol, dan saya ingin menulis ke variabel.

Tidak masalah jika skrip dapat mengetahui apakah itu Mac, Windows atau Linux. Bagaimana saya bisa memeriksanya?



Jawaban:


287

Anda bisa menggunakan sys.platform:

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

sys.platformmemiliki granularity lebih halus dari sys.name.

Untuk nilai yang valid, lihat dokumentasi .

Lihat juga jawaban untuk "OS apa yang saya jalankan?"


8
Perhatikan bahwa dalam cygwin, itu "cygwin"tidak kembali "win32"seperti yang diharapkan seseorang.
Michał Bentkowski

21
Terima kasih. Apa perbedaan antara linux dan linux2?
Tharindu Rusira

1
apa yang akan menjadi output untuk BSD?
galois

1
Perhatikan bahwa sejak Python 3.3, "linux2"tidak ada lagi nilai yang mungkin dari platform(lihat dokumen tertaut untuk bukti yang menguatkan) dan jadi jika Anda hanya perlu mendukung Python 3.3 dan kemudian Anda dapat dengan aman menghapus klausul `atau platform ==" linux2 "` dari kondisi pertama.
Mark Amery

23

Jika Anda ingin tahu di platform mana Anda berada di luar dari "Linux", "Windows", atau "Darwin" (Mac), tanpa lebih presisi, Anda harus menggunakan:

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

The platform.systemFungsi menggunakan unameinternal.


1
Saya suka solusi ini, tetapi saya ingin menunjukkan bahwa dari dokumentasi itu menyatakan bahwa ia akan kembali Linux, Windows, Javaatau string kosong. devdocs.io/python ~ 3.7
Brandon Benefield

2
@BrandonBenefield, enumerasi adalah contoh dari nilai yang mungkin. Di perangkat Apple, ia mengembalikan "Darwin".
Laurent LAPORTE

15

Anda bisa mendapatkan gambaran OS yang Anda gunakan dengan cara mengeceknya sys.platform.

Setelah Anda memiliki informasi itu, Anda dapat menggunakannya untuk menentukan apakah memanggil sesuatu seperti os.uname()itu tepat untuk mengumpulkan informasi yang lebih spesifik. Anda juga dapat menggunakan sesuatu seperti Informasi Sistem Python pada OS seperti unix, atau pywin32 untuk Windows.

Ada juga psutil jika Anda ingin melakukan pemeriksaan lebih mendalam tanpa ingin peduli dengan OS.


6

Informasi lebih rinci tersedia di platformmodul .


Apakah platformmodul memiliki kelebihan dibandingkan sys.platform? Kapan saya ingin menggunakan pendekatan mana?
matth

@matth: Anda mendapatkan informasi yang lebih terperinci dan terstruktur dari platformmodul. Cukup klik tautan untuk dokumentasi.
Sven Marnach

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.