Python: Ne OS üzerinde çalışan ben?

oy
410

Ya ben vs Windows, Unix, kullanıyorsam görmek için bakmak gerekir?

Oluştur 05/08/2008 saat 04:23
kaynak kullanıcı
Diğer dillerde...                            


28 cevaplar

oy
513

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

Çıkış platform.system()aşağıdaki gibidir:

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

Bkz: Platform - Alttaki platformun tanımlayan verilere erişme

Cevap 05/08/2008 saat 04:27
kaynak kullanıcı

oy
146

Dang - lbrandy beni dövdükleri, ama ben Vista için sistem sonuçları sağlamak anlamına gelmez!

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

... ve Windows 10'a için kimsenin nakledilen bir henüz inanamıyorum:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'
Cevap 05/08/2008 saat 04:57
kaynak kullanıcı

oy
108

Kayıt için buraya Mac sonuçları açıklanmıştır:

>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
Cevap 05/08/2008 saat 05:13
kaynak kullanıcı

oy
73

Örnek kod OS'nin kullanarak piton ayırt etmek:

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
Cevap 16/09/2014 saat 08:42
kaynak kullanıcı

oy
35

Zaten sys ithal varsa da sys.platform kullanabilir ve başka modülü almak istemiyorum

>>> import sys
>>> sys.platform
'linux2'
Cevap 26/08/2008 saat 16:41
kaynak kullanıcı

oy
24

Eğer kullanıcı tarafından okunabilir verileri ama yine detaylı istiyorsanız kullanabilirsiniz ) (platform.platform

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

Burada nerede bulunduklarını saptamak için Yapabileceğiniz birkaç farklı olası çağrıları var

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(),
))

Bu senaryonun çıkışları birkaç farklı sistemlerde koştu burada bulunabilir: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version

Cevap 23/01/2013 saat 11:55
kaynak kullanıcı

oy
17

Bunu yapmak

import sys
print sys.platform

Burada Dokümanlar: sys.platform .

İhtiyacınız olan her şey sys modülünde muhtemelen.

Cevap 16/02/2009 saat 15:43
kaynak kullanıcı

oy
10

Ben WebLogic'e ile gelir WLST araç kullanıyorum ve bu platformu paketi uygulamaz.

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

Dışında sistem yama gelen javaos.py ( pencereler 2003 jdk1.5 ile ilgili os.system () ile sorunu ), bu kullandığım budur (ben yapamam, ben kutudan çıktığı WebLogic'i kullanmak zorunda):

def iswindows():
  os = java.lang.System.getProperty( "os.name" )
  return "win" in os.lower()
Cevap 11/06/2010 saat 08:37
kaynak kullanıcı

oy
9
>>> import platform
>>> platform.system()
Cevap 25/06/2011 saat 12:10
kaynak kullanıcı

oy
8

Jython için buldum os adını almak için tek yol kontrol etmektir os.name(ile çalıştı Java özelliğini sys, osve platformWinXP'de Jython 2.5.3 için modüller):

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
Cevap 09/01/2013 saat 09:47
kaynak kullanıcı

oy
7

/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)
Cevap 10/10/2011 saat 01:11
kaynak kullanıcı

oy
6

Nereye Cygwin ile Windows üzerinde iseniz dikkat os.nameolduğunu posix.

>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW
Cevap 08/07/2015 saat 14:46
kaynak kullanıcı

oy
6

pencereler 8 İlginç sonuçlar:

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

Düzenleme: Bu bir var hata

Cevap 14/02/2013 saat 23:44
kaynak kullanıcı

oy
5

bunu dene:

import os

os.uname()

ve bunu yapabilirsiniz:

info=os.uname()
info[0]
info[1]
Cevap 16/01/2015 saat 18:13
kaynak kullanıcı

oy
5

Eğer çekirdek sürümü vb arayan, ancak linux dağıtımı için aramıyorum aşağıdaki kullanmak isteyebilir

+ Python2.6 içinde

>>> 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

python2.4 içinde

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

Eğer linux bu çalıştırıyorsanız Açıkçası, bu sadece çalışır. Eğer platformlarda daha genel komut dosyası olmasını istiyorsanız, diğer cevaplar verilen kod örnekleri ile bu karıştırabilirsiniz.

Cevap 28/03/2013 saat 06:19
kaynak kullanıcı

oy
5

aynı damarda....

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")
Cevap 28/09/2011 saat 18:54
kaynak kullanıcı

oy
4

Nasıl yeni cevapla ilgili:

import psutil
psutil.OSX     #True
psutil.WINDOWS #False
psutil.LINUX   #False 

Ben OSX kullandıysa Bu çıkış olurdu

Cevap 14/08/2017 saat 17:00
kaynak kullanıcı

oy
3

Sana çeşitli modüller (düzenlemek için çekinmeyin ve sisteminizi ekleyin) kullanarak bekleyebilirsiniz hangi değerleri biraz daha sistematik liste başladı:

Linux (64bit) + WSL

os.name                     posix
sys.platform                linux
platform.system()           Linux
sysconfig.get_platform()    linux-x86_64
platform.machine()          x86_64
platform.architecture()     ('64bit', '')
  • Arch Linux ve nane ile çalıştı, aynı sonuçları aldık
  • python2 üzerinde sys.platformçekirdek sürümü tarafından ekli olduğu, örneğin linux2, diğer her şey aynı kalır
  • (Ubuntu 18.04 LTS ile çalıştı) Linux Windows Subsystem aynı çıkışı hariç platform.architecture() = ('64bit', 'ELF')

WINDOWS (64 bit)

(32 bit kolon ile 32 bit alt-sistemi çalıştıran)

official python installer   64bit                     32bit
-------------------------   -----                     -----
os.name                     nt                        nt
sys.platform                win32                     win32
platform.system()           Windows                   Windows
sysconfig.get_platform()    win-amd64                 win32
platform.machine()          AMD64                     AMD64
platform.architecture()     ('64bit', 'WindowsPE')    ('64bit', 'WindowsPE')

msys2                       64bit                     32bit
-----                       -----                     -----
os.name                     posix                     posix
sys.platform                msys                      msys
platform.system()           MSYS_NT-10.0              MSYS_NT-10.0-WOW
sysconfig.get_platform()    msys-2.11.2-x86_64        msys-2.11.2-i686
platform.machine()          x86_64                    i686
platform.architecture()     ('64bit', 'WindowsPE')    ('32bit', 'WindowsPE')

msys2                       mingw-w64-x86_64-python3  mingw-w64-i686-python3
-----                       ------------------------  ----------------------
os.name                     nt                        nt
sys.platform                win32                     win32
platform.system()           Windows                   Windows
sysconfig.get_platform()    mingw                     mingw
platform.machine()          AMD64                     AMD64
platform.architecture()     ('64bit', 'WindowsPE')    ('32bit', 'WindowsPE')

cygwin                      64bit                     32bit
------                      -----                     -----
os.name                     posix                     posix
sys.platform                cygwin                    cygwin
platform.system()           CYGWIN_NT-10.0            CYGWIN_NT-10.0-WOW
sysconfig.get_platform()    cygwin-3.0.1-x86_64       cygwin-3.0.1-i686
platform.machine()          x86_64                    i686
platform.architecture()     ('64bit', 'WindowsPE')    ('32bit', 'WindowsPE')

Bazı açıklamalar:

  • orada da distutils.util.get_platform()sysconfig.get_platform `özdeş olan
  • Pencerelerde anaconda resmi piton pencereler yükleyici ile aynıdır
  • Ben bir Mac ne de gerçek bir 32bit sistemi olmayan ve çevrimiçi bunu yapmak için motive değildi

sadece bu komut dosyasını çalıştırın (ve eksik varsa sonuçları burada ekleyin lütfen, sisteminizle karşılaştırmak :)

from __future__ import print_function
import os
import sys
import platform
import sysconfig

print("os.name                      ",  os.name)
print("sys.platform                 ",  sys.platform)
print("platform.system()            ",  platform.system())
print("sysconfig.get_platform()     ",  sysconfig.get_platform())
print("platform.machine()           ",  platform.machine())
print("platform.architecture()      ",  platform.architecture())
Cevap 23/02/2019 saat 02:39
kaynak kullanıcı

oy
3

Ayrıca tüm bilgileri almak için os modülünü içe aktarmadan tek platform modülünü kullanabilirsiniz.

>>> 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')

amacını bildirmek için bir güzel ve düzenli düzeni bu hattı kullanarak elde edilebilir:

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

Yani bu çıktıyı verir:

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

Ne genellikle eksik işletim sistemi sürümü ama pencereler, linux veya mac platform indipendent yolu bu testi kullanmaktır çalıştırıyorsanız bilmelidir edilir:

In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]:
   ....:     if i[0]:
   ....:         print 'Version: ',i[0]
Cevap 20/08/2016 saat 08:03
kaynak kullanıcı

oy
3

modül platformu ile kullanılabilen testler kontrol edin ve sistem için cevap çıktısını:

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
Cevap 30/10/2014 saat 00:43
kaynak kullanıcı

oy
2
import sys
import platform

# return a platform identifier
print(sys.platform)

# return system/os name
print(platform.system())

# print system info
# similar to 'uname' command in unix
print(platform.uname())
Cevap 03/02/2019 saat 22:43
kaynak kullanıcı

oy
1

Sen kod bakabilirsiniz pyOSinfoparçası olan Pip-tarih Python dağılımından görüldüğü gibi, en alakalı OS bilgi almak için, paketin.

Belirli sistem komutları kullanılabilir durumunda insanların OS kontrol etmek istiyorum en yaygın nedenlerinden biri terminali uyumluluk içindir ve. Ne yazık ki, bu kontrol başarısı sizin piton kurulum ve OS üzerinde biraz bağlıdır. Örneğin, unameçoğu Windows piton paketleri üzerinde kullanılamaz. Yukarıdaki piton programı en sık kullanılan yerleşik işlevleri çıktısını, zaten tarafından sağlanan gösterecektir os, sys, platform, site.

Burada görüntü açıklama girin

En iyi yolu almak için Yani sadece zorunlu kod bakıyor o bir örnek olarak. (Ben onu burada yapıştırılan olabilirdi, ama bu politik olarak doğru olmazdı sanırım.)

Cevap 07/02/2019 saat 21:10
kaynak kullanıcı

oy
1

Bu çözüm için çalışır pythonve jython.

Modül 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>" 

Böyle kullanın:

import os_identify

print "My OS: " + os_identify.name()
Cevap 29/01/2019 saat 13:06
kaynak kullanıcı

oy
1

Eğer MacOS X çalıştıran ve çalıştırmak ise platform.system()MacOS X Apple'ın Darwin OS üzerinde inşa edilmiştir çünkü darwin olsun. Darwin MacOS X çekirdek ve GUI olmadan esas MacOS X.

Cevap 13/01/2018 saat 21:29
kaynak kullanıcı

oy
1

Kullan import os ve os.nameanahtar kelimeleri.

Cevap 07/05/2017 saat 03:07
kaynak kullanıcı

oy
0

Ben Windows, Linux ve MacOs üzerinde çalışan, böylece vaka herkes buna ihtiyacı sadece bu kullandığım bir işlev benim kod üzerinde ayarlamalar yapmak için, oyuna geç kaldım ama:

import sys
def get_os(osoptions={'linux':'linux','Windows':'win','macos':'darwin'}):
    '''
    get OS to allow code specifics
    '''   
    opsys = [k for k in osoptions.keys() if sys.platform.lower().find(osoptions[k].lower()) != -1]
    try:
        return opsys[0]
    except:
        return 'unknown_OS'
Cevap 22/05/2019 saat 16:32
kaynak kullanıcı

oy
0

Nasıl aşağıdaki gibi basit bir numaralandırma uygulaması hakkında? Dış kütüphanelerini gerek yok!

import platform
from enum import Enum
class OS(Enum):
    def checkPlatform(osName):
        return osName.lower()== platform.system().lower()

    MAC = checkPlatform("darwin")
    LINUX = checkPlatform("linux")
    WINDOWS = checkPlatform("windows")  #I haven't test this one

Basitçe Enum değeri ile erişebilirsiniz

if OS.LINUX.value:
    print("Cool it is Linux")

PS Bu python3 olduğunu

Cevap 27/09/2018 saat 17:39
kaynak kullanıcı

oy
-4

Sadece şeyiyle "OS" ortam değişkeni her yerde tanımlanmalıdır görünüyor. Windows XP'de / 7/8/10 o "Windows_NT" olarak ayarlanır. Linux SuSE SP2 sistemlerde ise "X86-64 linux sles11 [2]" olarak ayarlanır. Ben de orada kontrol etmek ilginç olacaktır, OS-X veya BSD makinelerine erişimi yoktur.

import os

os_name = os.getenv("OS")
if os_name == "Windows_NT":
    # Windows
elif "linux" in os_name:
    # Linux
elif ...
Cevap 01/12/2015 saat 07:28
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more