Apa yang saya butuhkan untuk melihat untuk melihat apakah saya'm pada Windows atau Unix, dll?
>>> 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
Darwin
Windows
Lihat: platform — Akses ke platform yang mendasari identifikasi data
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'
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
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'
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: ('', ('', '', ''), '')
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
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()
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
Aku mulai sedikit lebih sistematis daftar nilai-nilai apa yang dapat anda harapkan menggunakan berbagai modul (merasa bebas untuk mengedit dan menambahkan sistem anda):
os.nama posix sys.platform linux platform.sistem() Linux sysconfig.get_platform() linux-x86_64 platform.mesin() x86_64 platform.arsitektur() ('64bit', '')
sys.platform
ini diakhiri dengan versi kernel, misal linux2
, segala sesuatu yang lain tetap samaplatform.arsitektur() = ('64bit', 'ELF')
(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:
distutils.util.get_platform()
yang identik dengan `sysconfig.get_platformUntuk 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()) ``
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.
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
platform.sistem()
.posix
atau nt
kemudian menggunakan os.nama
.sys.platform
.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
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]
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 "<unknown>"
Gunakan seperti ini:
import os_identify
print "My OS: " + os_identify.name()