문제

내가 Windows 또는 Unix 등을 사용하고 있는지 확인하려면 무엇을 확인해야 합니까?

도움이 되었습니까?

해결책

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

의 출력 platform.system() 다음과 같다:

  • 리눅스: Linux
  • 맥: Darwin
  • 윈도우: Windows

보다: 플랫폼 — 기본 플랫폼의 식별 데이터에 대한 액세스

다른 팁

젠장 -- 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'

참고로 Mac에서의 결과는 다음과 같습니다.

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

Python을 사용하여 OS를 구별하는 샘플 코드:

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

이미 sys를 가져왔고 다른 모듈을 가져오지 않으려는 경우 sys.platform을 사용할 수도 있습니다.

>>> import sys
>>> sys.platform
'linux2'

사용자가 읽을 수 있는 데이터를 원하지만 여전히 상세한 데이터를 원하면 다음을 사용할 수 있습니다. 플랫폼.플랫폼()

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

이 스크립트의 출력은 몇 가지 다른 시스템(Linux, Windows, Solaris, MacOS) 및 아키텍처(x86, x64, Itanium, power pc, sparc)에서 실행되었으며 여기에서 확인할 수 있습니다. https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version

예를 들어 Ubuntu 12.04 서버는 다음을 제공합니다.

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

나는 이것을한다

import sys
print sys.platform

문서는 여기에 있습니다: sys.플랫폼.

필요한 모든 것은 아마도 sys 모듈에 있을 것입니다.

weblogic과 함께 제공되는 WLST 도구를 사용하고 있는데 플랫폼 패키지를 구현하지 않습니다.

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 (jdk1.5를 사용하는 Windows 2003의 os.system() 문제) (저는 할 수 없습니다. 즉시 weblogic을 사용해야 합니다.) 이것이 제가 사용하는 것입니다:

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

새로운 답변은 어떻습니까?

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

MACOS를 사용하는 경우 출력은 다음과 같습니다.

>>> import platform
>>> platform.system()

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

Jython의 경우 내가 찾은 OS 이름을 얻는 유일한 방법은 확인하는 것입니다. os.name Java 속성(다음으로 시도 sys, os 그리고 platform WinXP의 Jython 2.5.3용 모듈):

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

다양한 모듈을 사용하여 기대할 수 있는 값에 대한 좀 더 체계적인 목록을 시작했습니다(시스템을 자유롭게 편집하고 추가하세요).

리눅스(64비트) + WSL

os.name                     posix
sys.platform                linux
platform.system()           Linux
sysconfig.get_platform()    linux-x86_64
platform.machine()          x86_64
platform.architecture()     ('64bit', '')
  • Archlinux와 mint로 시도했지만 동일한 결과를 얻었습니다.
  • python2에서 sys.platform 커널 버전이 접미사로 붙습니다. linux2, 다른 모든 항목은 동일하게 유지됩니다.
  • Linux용 Windows 하위 시스템(ubuntu 18.04 LTS로 시도)에서 동일한 출력을 제외하고 platform.architecture() = ('64bit', 'ELF')

Windows(64비트)

(32비트 하위 시스템에서 실행되는 32비트 열 포함)

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

몇 가지 참고사항:

  • 도 있습니다 distutils.util.get_platform() 이는 `sysconfig.get_platform'과 동일합니다.
  • Windows의 anaconda는 공식 Python Windows 설치 프로그램과 동일합니다.
  • 저는 Mac도 없고 진정한 32비트 시스템도 없고 온라인에서 할 의욕이 없습니다.

귀하의 시스템과 비교하려면 이 스크립트를 실행하기만 하면 됩니다(누락된 경우 여기에 결과를 추가하십시오).

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

Windows 8의 흥미로운 결과:

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

편집하다: 그건 벌레

Cygwin이 설치된 Windows를 사용 중이라면 주의하세요. os.name ~이다 posix.

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

같은 맥락에서....

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

커널 버전 등을 찾지 않고 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에서 실행하는 경우에만 작동합니다.플랫폼 전반에 걸쳐 보다 일반적인 스크립트를 갖고 싶다면 이를 다른 답변에 제공된 코드 샘플과 혼합할 수 있습니다.

이 시도:

import os

os.uname()

그리고 당신은 그것을 만들 수 있습니다 :

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

모듈 플랫폼으로 사용 가능한 테스트를 확인하고 시스템에 대한 답을 인쇄하십시오.

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

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]

macOS X를 실행 중이고 다음을 실행하는 경우 platform.system() MacOS X가 Apple의 Darwin OS에 구축 되었기 때문에 Darwin을 얻습니다.Darwin은 macOS X의 커널이며 기본적으로 GUI가 없는 macOS X입니다.

이 솔루션은 두 가지 모두에 적용됩니다. python 그리고 jython.

기준 치수 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>" 

다음과 같이 사용하세요:

import os_identify

print "My OS: " + os_identify.name()
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())

사용 import os 그리고 os.name 키워드.

다음과 같은 간단한 Enum 구현은 어떻습니까?외부 라이브러리가 필요하지 않습니다!

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

추신 그것은 python3입니다

에서 코드를 볼 수 있습니다. pyOSinfo 이는의 일부입니다. 핍 날짜 Python 배포판에서 볼 수 있듯이 가장 관련성이 높은 OS 정보를 얻으려면 패키지를 사용하세요.

사람들이 OS를 확인하려는 가장 일반적인 이유 중 하나는 터미널 호환성과 특정 시스템 명령을 사용할 수 있는지 여부입니다.불행하게도 이 검사의 성공 여부는 Python 설치 및 OS에 따라 다소 달라집니다.예를 들어, uname 대부분의 Windows Python 패키지에서는 사용할 수 없습니다.위의 Python 프로그램은 이미 제공한 가장 일반적으로 사용되는 내장 함수의 출력을 보여줍니다. os, sys, platform, site.

enter image description here

따라서 필수 코드만 얻는 가장 좋은 방법은 다음을 보는 것입니다. 저것 예로서.(그냥 여기에 붙여넣을 수도 있었겠지만, 그건 정치적으로 올바르지 않았을 겁니다.)

나는 게임에 늦었지만 누군가 필요할 경우를 대비하여 Windows, Linux 및 MacO에서 실행되도록 내 코드를 조정하는 데 사용하는 기능입니다.

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'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top