Python: Τι OS είμαι τρέχει επάνω;

ψήφοι
410

Τι πρέπει να κοιτάξουμε να δούμε αν είμαι σε Windows, Unix, κλπ;

Δημοσιεύθηκε 05/08/2008 στις 04:23
πηγή χρήστη
Σε άλλες γλώσσες...                            


23 απαντήσεις

ψήφοι
513

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

Η έξοδος του platform.system()είναι η εξής:

  • Linux: Linux
  • Μακ: Darwin
  • των windows: Windows

Δείτε: πλατφόρμα - Πρόσβαση σε στοιχεία ταυτότητας υποκείμενης πλατφόρμας

Απαντήθηκε 05/08/2008 στις 04:27
πηγή χρήστη

ψήφοι
146

Dang - lbrandy με χτυπούν με την γροθιά, αλλά αυτό δεν σημαίνει ότι δεν μπορώ να σας παρέχουμε τα αποτελέσματα του συστήματος για τα Vista!

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

... και δεν μπορώ να πιστέψω αποστείλατε ένα κανενός για τα Windows 10 ακόμη:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'
Απαντήθηκε 05/08/2008 στις 04:57
πηγή χρήστη

ψήφοι
108

Για την ιστορία εδώ είναι τα αποτελέσματα για Mac:

>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
Απαντήθηκε 05/08/2008 στις 05:13
πηγή χρήστη

ψήφοι
73

Δείγμα κώδικα να διαφοροποιηθούν χρησιμοποιώντας 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
Απαντήθηκε 16/09/2014 στις 08:42
πηγή χρήστη

ψήφοι
35

Μπορείτε επίσης να χρησιμοποιήσετε sys.platform αν έχετε ήδη εισαχθεί sys και δεν θέλετε να εισαγάγετε μια άλλη μονάδα

>>> import sys
>>> sys.platform
'linux2'
Απαντήθηκε 26/08/2008 στις 16:41
πηγή χρήστη

ψήφοι
24

Αν θέλετε χρήστης αναγνώσιμα δεδομένα, αλλά εξακολουθούν να αναφέρονται λεπτομερώς, μπορείτε να χρησιμοποιήσετε platform.platform ()

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

Εδώ είναι μερικές διαφορετικές πιθανές κλήσεις που μπορείτε να κάνετε για να προσδιορίσει όπου και αν βρίσκεστε

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

Τα αποτελέσματα αυτού του σεναρίου έτρεξε σε μερικά διαφορετικά συστήματα είναι διαθέσιμη εδώ: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version

Απαντήθηκε 23/01/2013 στις 11:55
πηγή χρήστη

ψήφοι
17

το κάνω

import sys
print sys.platform

Έγγραφα εδώ: sys.platform .

Ό, τι χρειάζεστε είναι ίσως το άρθρωμα sys.

Απαντήθηκε 16/02/2009 στις 15:43
πηγή χρήστη

ψήφοι
10

Είμαι χρησιμοποιώντας το εργαλείο WLST που έρχεται με WebLogic, και δεν εφαρμόσει το πακέτο της πλατφόρμας.

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

Εκτός από την επιδιόρθωση του συστήματος javaos.py ( θέμα με os.system () για τα Windows 2003 με jdk1.5 ) (το οποίο δεν μπορώ να κάνω, έχω να χρησιμοποιούν WebLogic έξω από το κουτί), αυτό είναι ό, τι μπορώ να χρησιμοποιήσω:

def iswindows():
  os = java.lang.System.getProperty( "os.name" )
  return "win" in os.lower()
Απαντήθηκε 11/06/2010 στις 08:37
πηγή χρήστη

ψήφοι
9
>>> import platform
>>> platform.system()
Απαντήθηκε 25/06/2011 στις 12:10
πηγή χρήστη

ψήφοι
8

Για Jython ο μόνος τρόπος για να πάρετε το όνομά os βρήκα είναι να ελέγξετε os.nameτο ακίνητο Java (προσπάθησα με sys, osκαι platformενότητες για Jython 2.5.3 για 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
Απαντήθηκε 09/01/2013 στις 09:47
πηγή χρήστη

ψήφοι
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)
Απαντήθηκε 10/10/2011 στις 01:11
πηγή χρήστη

ψήφοι
6

Προσέξτε αν είστε σε Windows με Cygwin όπου os.nameείναι posix.

>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW
Απαντήθηκε 08/07/2015 στις 14:46
πηγή χρήστη

ψήφοι
6

Ενδιαφέροντα αποτελέσματα σχετικά με τα Windows 8:

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

Επεξεργασία: Αυτό είναι ένα bug

Απαντήθηκε 14/02/2013 στις 23:44
πηγή χρήστη

ψήφοι
5

δοκιμάστε αυτό:

import os

os.uname()

και μπορείτε να το κάνετε:

info=os.uname()
info[0]
info[1]
Απαντήθηκε 16/01/2015 στις 18:13
πηγή χρήστη

ψήφοι
5

Αν δεν ψάχνετε για τον πυρήνα έκδοση κλπ, αλλά ψάχνει για την διανομή linux μπορεί να θέλετε να χρησιμοποιήσετε την ακόλουθη

στην 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

στην python2.4

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

Προφανώς, αυτό θα λειτουργήσει μόνο εάν εκτελείτε αυτό σε linux. Αν θέλετε να έχετε πιο γενικό σενάριο σε όλες τις πλατφόρμες, μπορείτε να συνδυάσετε αυτό με δείγματα κώδικα δίνεται σε άλλες απαντήσεις.

Απαντήθηκε 28/03/2013 στις 06:19
πηγή χρήστη

ψήφοι
5

στο ίδιο πνεύμα....

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")
Απαντήθηκε 28/09/2011 στις 18:54
πηγή χρήστη

ψήφοι
4

Τι θα λέγατε για μια νέα απάντηση:

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

Αυτό θα ήταν το αποτέλεσμα αν ήμουν με OSX

Απαντήθηκε 14/08/2017 στις 17:00
πηγή χρήστη

ψήφοι
3

Μπορείτε επίσης να χρησιμοποιήσετε μόνο μονάδα πλατφόρμα, χωρίς την εισαγωγή της μονάδας os για να πάρετε όλες τις πληροφορίες.

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

Ένα όμορφο και τακτοποιημένο διάταξη για την υποβολή εκθέσεων με σκοπό να επιτευχθεί χρησιμοποιώντας αυτή τη γραμμή:

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

Αυτό δίνει αυτό το αποτέλεσμα:

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

Αυτό που λείπει συνήθως είναι η έκδοση του λειτουργικού συστήματος, αλλά θα πρέπει να γνωρίζετε εάν εκτελείτε Windows, Linux ή Mac πλατφόρμα Ανεξαρτήτων τρόπος είναι να χρησιμοποιήσετε αυτή τη δοκιμή:

In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]:
   ....:     if i[0]:
   ....:         print 'Version: ',i[0]
Απαντήθηκε 20/08/2016 στις 08:03
πηγή χρήστη

ψήφοι
3

Ελέγξτε τις διαθέσιμες δοκιμές με την πλατφόρμα της μονάδας και να εκτυπώσετε την απάντηση για το σύστημά σας:

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
Απαντήθηκε 30/10/2014 στις 00:43
πηγή χρήστη

ψήφοι
1

Εάν εκτελείτε MacOS X και τρέχει platform.system()να πάρετε Δαρβίνου, επειδή το MacOS X είναι χτισμένο σε Δαρβίνου OS της Apple. Darwin είναι ο πυρήνας του MacOS X και είναι ουσιαστικά MacOS X χωρίς το GUI.

Απαντήθηκε 13/01/2018 στις 21:29
πηγή χρήστη

ψήφοι
1

Χρησιμοποιήστε το import osκαι os.nameλέξεις-κλειδιά.

Απαντήθηκε 07/05/2017 στις 03:07
πηγή χρήστη

ψήφοι
0

Τι θα λέγατε για μια απλή εφαρμογή Enum όπως τα ακόλουθα; Δεν υπάρχει ανάγκη για εξωτερική libs!

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

Απλά μπορείτε να έχετε πρόσβαση με την αξία Enum

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

PS Είναι python3

Απαντήθηκε 27/09/2018 στις 17:39
πηγή χρήστη

ψήφοι
-4

Απλά για την πληρότητα, «OS» μεταβλητή περιβάλλοντος φαίνεται να ορίζεται παντού. Στα Windows XP / 7/8/10 έχει οριστεί σε "Windows_NT". Στο Linux SuSE SP2 έχει οριστεί σε "x86-64 linux SLES11 [2]". Δεν έχω πρόσβαση στο OS-X ή BSD μηχανές, θα ήταν ενδιαφέρον να ελέγξετε εκεί.

import os

os_name = os.getenv("OS")
if os_name == "Windows_NT":
    # Windows
elif "linux" in os_name:
    # Linux
elif ...
Απαντήθηκε 01/12/2015 στις 07:28
πηγή χρήστη

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