OS apa yang aku berjalan di?

Apa yang saya butuhkan untuk melihat untuk melihat apakah saya'm pada Windows atau Unix, dll?

Mengomentari pertanyaan (2)
Larutan
>>> import os
>>> print os.name
posix
>>> import platform
>>> platform.system()
'Linux'
>>> platform.release()
'2.6.22-15-generic'

Output dari platform.sistem() adalah sebagai berikut:

  • Linux: Linux
  • Mac: Darwin
  • Windows: Windows

Lihat: platform — Akses ke platform yang mendasari identifikasi data

Komentar (6)

Dang -- lbrandy beat me to the punch, tapi itu doesn't berarti aku bisa't menyediakan anda dengan hasil sistem untuk Vista!

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'Vista'

...dan aku tidak bisa percaya tidak ada yang diposting untuk Windows 10 belum:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'
Komentar (4)

Sebagai catatan di sini's hasil pada Mac:

>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
Komentar (0)

Contoh kode untuk membedakan OS's menggunakan python:

from sys import platform as _platform

if _platform == "linux" or _platform == "linux2":
   # linux
elif _platform == "darwin":
   # MAC OS X
elif _platform == "win32":
   # Windows
elif _platform == "win64":
    # Windows 64-bit
Komentar (5)

Anda juga dapat menggunakan sys.platform jika anda sudah memiliki yang diimpor sys dan anda don't ingin mengimpor modul lain

>>> import sys
>>> sys.platform
'linux2'
Komentar (2)

Jika anda ingin pengguna data yang dapat dibaca tetapi masih rinci, anda dapat menggunakan platform.platform()

>>> import platform
>>> platform.platform()
'Linux-3.3.0-8.fc16.x86_64-x86_64-with-fedora-16-Verne'

Berikut ini's yang berbeda mungkin panggilan anda dapat membuat untuk mengidentifikasi di mana anda berada

import platform
import sys

def linux_distribution():
  try:
    return platform.linux_distribution()
  except:
    return "N/A"

print("""Python version: %s
dist: %s
linux_distribution: %s
system: %s
machine: %s
platform: %s
uname: %s
version: %s
mac_ver: %s
""" % (
sys.version.split('\n'),
str(platform.dist()),
linux_distribution(),
platform.system(),
platform.machine(),
platform.platform(),
platform.uname(),
platform.version(),
platform.mac_ver(),
))

Output dari script ini dijalankan pada beberapa sistem yang berbeda (Linux, Windows, Solaris, MacOS) dan arsitektur (x86, x64, Itanium, power pc, sparc) tersedia di sini: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version

Ubuntu 12.04 server misalnya memberikan:

Python version: ['2.6.5 (r265:79063, Oct  1 2012, 22:04:36) ', '[GCC 4.4.3]']
dist: ('Ubuntu', '10.04', 'lucid')
linux_distribution: ('Ubuntu', '10.04', 'lucid')
system: Linux
machine: x86_64
platform: Linux-2.6.32-32-server-x86_64-with-Ubuntu-10.04-lucid
uname: ('Linux', 'xxx', '2.6.32-32-server', '#62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011', 'x86_64', '')
version: #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011
mac_ver: ('', ('', '', ''), '')
Komentar (0)

Bagaimana jawaban baru:

import psutil
psutil.MACOS   #True (OSX is deprecated)
psutil.WINDOWS #False
psutil.LINUX   #False 

Ini akan menjadi output jika saya menggunakan MACOS

Komentar (4)

Saya menggunakan WLST alat yang dilengkapi dengan weblogic, dan itu doesn't mengimplementasikan platform paket.

wls:/offline> import os
wls:/offline> print os.name
java 
wls:/offline> import sys
wls:/offline> print sys.platform
'java1.5.0_11'

Selain menambal sistem javaos.py (masalah dengan os.sistem() pada windows 2003 dengan jdk1.5) (yang saya dapat't lakukan, saya harus menggunakan weblogic out of the box), ini adalah apa yang saya gunakan:

def iswindows():
  os = java.lang.System.getProperty( "os.name" )
  return "win" in os.lower()
Komentar (0)

Untuk kelompok dari setiap dua elemen satu-satunya cara untuk mendapatkan nama os yang saya temukan adalah untuk memeriksa os.nama Java properti (mencoba dengan sys, os dan platform modul untuk kelompok dari setiap dua elemen 2.5.3 pada WinXP):

def get_os_platform():
    """return platform name, but for Jython it uses os.name Java property"""
    ver = sys.platform.lower()
    if ver.startswith('java'):
        import java.lang
        ver = java.lang.System.getProperty("os.name").lower()
    print('platform: %s' % (ver))
    return ver
Komentar (1)

/usr/bin/python3.2

def cls():
    from subprocess import call
    from platform import system

    os = system()
    if os == 'Linux':
        call('clear', shell = True)
    elif os == 'Windows':
        call('cls', shell = True)
Komentar (2)

Aku mulai sedikit lebih sistematis daftar nilai-nilai apa yang dapat anda harapkan menggunakan berbagai modul (merasa bebas untuk mengedit dan menambahkan sistem anda):

Linux (64bit) + WSL

os.nama posix sys.platform linux platform.sistem() Linux sysconfig.get_platform() linux-x86_64 platform.mesin() x86_64 platform.arsitektur() ('64bit', '')

  • mencoba dengan archlinux dan mint, mendapat hasil yang sama
  • pada python2 sys.platform ini diakhiri dengan versi kernel, misal linux2, segala sesuatu yang lain tetap sama
  • output yang sama pada Windows Subsistem untuk Linux (mencoba dengan ubuntu 18.04 LTS), kecuali platform.arsitektur() = ('64bit', 'ELF')

WINDOWS (64bit)

(dengan 32bit kolom yang berjalan di 32 bit subsistem)

`` resmi python installer 64bit 32bit


os.nama nt nt sys.platform win32 win32 platform.(sistem) Windows Windows sysconfig.get_platform() win-amd64 win32 platform.mesin() AMD64 AMD64 platform.arsitektur() ('64bit', 'WindowsPE') ('64bit', 'WindowsPE')

msys2 64bit 32bit


os.nama posix posix sys.platform msys msys platform.sistem() MSYS_NT-10.0 MSYS_NT-10.0-WOW sysconfig.get_platform() msys-2.11.2-x86_64 msys-2.11.2-i686 platform.mesin() x86_64 i686 platform.arsitektur() ('64bit', 'WindowsPE') ('32bit', 'WindowsPE')

msys2 mingw-w64-x86_64-python3 mingw-w64-i686-python3


os.nama nt nt sys.platform win32 win32 platform.(sistem) Windows Windows sysconfig.get_platform() mingw mingw platform.mesin() AMD64 AMD64 platform.arsitektur() ('64bit', 'WindowsPE') ('32bit', 'WindowsPE')

cygwin 64bit 32bit


os.nama posix posix sys.platform cygwin cygwin platform.sistem() CYGWIN_NT-10.0 CYGWIN_NT-10.0-WOW sysconfig.get_platform() cygwin-3.0.1-x86_64 cygwin-3.0.1-i686 platform.mesin() x86_64 i686 platform.arsitektur() ('64bit', 'WindowsPE') ('32bit', 'WindowsPE')

``

Beberapa komentar:

  • ada juga distutils.util.get_platform() yang identik dengan `sysconfig.get_platform
  • anaconda pada windows adalah sama seperti resmi python windows installer
  • I don't memiliki Mac atau benar sistem 32bit dan tidak termotivasi untuk melakukannya secara online

Untuk membandingkan dengan sistem anda, cukup jalankan script ini (dan silahkan tambahkan hasil di sini jika hilang :)

`` dari masa impor print_function impor os import sys impor platform impor sysconfig

print("os.nama ", os.nama) print("sys.platform ", sys.platform) print("platform.sistem() ", platform.sistem()) print("sysconfig.get_platform() ", sysconfig.get_platform()) print("platform.mesin() ", platform.mesin()) print("platform.arsitektur() ", platform.arsitektur()) ``

Komentar (0)

Hati-hati jika anda're pada Windows dengan Cygwin di mana os.nama adalah posix.

>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW
Komentar (0)

Hasil yang menarik pada windows 8:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'post2008Server'

Edit: Yang's bug

Komentar (0)

dalam vena yang sama....

import platform
is_windows=(platform.system().lower().find("win") > -1)

if(is_windows): lv_dll=LV_dll("my_so_dll.dll")
else:           lv_dll=LV_dll("./my_so_dll.so")
Komentar (2)

Jika anda tidak mencari untuk versi kernel dll, tetapi mencari untuk distribusi linux, anda mungkin ingin menggunakan berikut

di python2.6+

>>> import platform
>>> print platform.linux_distribution()
('CentOS Linux', '6.0', 'Final')
>>> print platform.linux_distribution()[0]
CentOS Linux
>>> print platform.linux_distribution()[1]
6.0

di python2.4

>>> import platform
>>> print platform.dist()
('centos', '6.0', 'Final')
>>> print platform.dist()[0]
centos
>>> print platform.dist()[1]
6.0

Jelas, ini akan bekerja hanya jika anda menjalankan ini di linux. Jika anda ingin memiliki lebih generik script di seluruh platform, anda dapat mencampur dengan kode sampel yang diberikan dalam jawaban yang lain.

Komentar (0)

coba ini:

import os

os.uname()

dan anda dapat membuatnya :

info=os.uname()
info[0]
info[1]
Komentar (2)

Ada 3 cara untuk mendapatkan OS di Python, masing-masing dengan pro dan kontra:

Metode 1

>>> import sys
>>> sys.platform
'win32'  # could be 'linux', 'linux2, 'darwin', 'freebsd8' etc

Bagaimana ini bekerja (sumber): Internal itu panggilan OS Api untuk mendapatkan nama OS seperti yang didefinisikan oleh OS. Ini jelas dapat berubah dari versi ke versi, jadi yang terbaik untuk tidak menggunakan secara langsung. Lihat di sini untuk berbagai OS-nilai-nilai tertentu.

Metode 2

>>> import os
>>> os.name
'nt'  # for Linux and Mac it prints 'posix'

Bagaimana ini bekerja (sumber): Internal memeriksa jika python memiliki OS-modul tertentu yang disebut posix atau nt. Jika anda ingin mengimpor modul ini dan memanggil metode pada itu, ini karya besar. Perhatikan bahwa ada tidak ada perbedaan antara Linux atau OSX.

Metode 3

>>> import platform
>>> platform.system()
'Windows' # for Linux it prints 'Linux', Mac it prints `'Darwin'

Bagaimana ini bekerja (sumber): Internal pada akhirnya akan panggil internal OS Api, dapatkan versi OS-nama tertentu seperti 'win32' atau 'win16' atau 'linux1' dan kemudian menormalkan untuk lebih generik nama-nama seperti 'Windows' atau 'Linux' atau 'Darwin' dengan menerapkan beberapa heuristik. Ini adalah yang terbaik portabel cara untuk mendapatkan dinormalisasi nama OS.

Ringkasan

  • Jika anda ingin memeriksa apakah OS Windows atau Linux atau OSX maka cara yang paling dapat diandalkan adalah platform.sistem().
  • Jika anda ingin membuat OS-spesifik panggilan tetapi melalui built-in Python modul posix atau nt kemudian menggunakan os.nama.
  • Jika anda ingin mendapatkan raw nama OS seperti yang disediakan oleh OS itu sendiri kemudian menggunakan sys.platform.
Komentar (0)

Periksa tes tersedia dengan modul platform dan cetak jawabannya untuk sistem anda:

import platform

print dir(platform)

for x in dir(platform):
    if x[0].isalnum():
        try:
            result = getattr(platform, x)()
            print "platform."+x+": "+result
        except TypeError:
            continue
Komentar (0)

Anda juga dapat hanya menggunakan platform module tanpa mengimpor os modul untuk mendapatkan semua informasi.

>>> import platform
>>> platform.os.name
'posix'
>>> platform.uname()
('Darwin', 'mainframe.local', '15.3.0', 'Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64', 'x86_64', 'i386')

Bagus dan rapi tata letak untuk tujuan pelaporan dapat dicapai dengan menggunakan jalur ini:

for i in zip(['system','node','release','version','machine','processor'],platform.uname()):print i[0],':',i[1]

Yang memberikan output ini:

system : Darwin
node : mainframe.local
release : 15.3.0
version : Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64
machine : x86_64
processor : i386

Apa yang hilang biasanya adalah versi sistem operasi, tetapi anda harus tahu jika anda menjalankan windows, linux atau mac platform independen caranya adalah dengan menggunakan tes ini:

In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]:
   ....:     if i[0]:
   ....:         print 'Version: ',i[0]
Komentar (0)

Solusi ini bekerja untuk kedua python dan kelompok dari setiap dua elemen.

modul os_identify.py:

import platform
import os

# This module contains functions to determine the basic type of
# OS we are running on.
# Contrary to the functions in the `os` and `platform` modules,
# these allow to identify the actual basic OS,
# no matter whether running on the `python` or `jython` interpreter.

def is_linux():
    try:
        platform.linux_distribution()
        return True
    except:
        return False

def is_windows():
    try:
        platform.win32_ver()
        return True
    except:
        return False

def is_mac():
    try:
        platform.mac_ver()
        return True
    except:
        return False

def name():
    if is_linux():
        return "Linux"
    elif is_windows():
        return "Windows"
    elif is_mac():
        return "Mac"
    else:
        return "" 

Gunakan seperti ini:

import os_identify

print "My OS: " + os_identify.name()
Komentar (0)