파이썬에서 운영 체제를 어떻게 확인합니까?


148

스크립트가 실행되는 컴퓨터에서 운영 체제를 확인하고 싶습니다.

os.system('uname -o')Linux에서 사용할 수 있다는 것을 알고 있지만 콘솔에 메시지가 표시되어 변수에 쓰고 싶습니다.

스크립트가 Mac, Windows 또는 Linux인지 알 수 있으면 괜찮습니다. 어떻게 확인할 수 있습니까?



답변:


287

당신은 사용할 수 있습니다 sys.platform:

from sys import platform
if platform == "linux" or platform == "linux2":
    # linux
elif platform == "darwin":
    # OS X
elif platform == "win32":
    # Windows...

sys.platform보다 세분화 sys.name됩니다.

유효한 값 은 설명서를 참조하십시오 .

“어떤 OS를 실행하고 있습니까?”에 대한 답변도 참조하십시오.


8
cygwin에서는 예상대로 반환 "cygwin"되지 않습니다 "win32".
Michał Bentkowski

21
감사. linux와 linux2의 차이점은 무엇입니까?
Tharindu Rusira

1
BSD의 출력은 무엇입니까?
galois

1
Python 3.3부터는 "linux2"더 이상 가능한 값이 아니며 platform(확증에 대한 링크 된 문서 참조) Python 3.3 이상 만 지원해야하는 경우`또는 platform == "linux2"`절을 안전하게 삭제할 수 있습니다. 첫 번째 조건.
마크 애 머리

23

"Linux", "Windows"또는 "Darwin"(Mac) 중 어느 플랫폼에 있는지보다 정밀하게 알고 싶다면 다음을 사용해야합니다.

>>> import platform
>>> platform.system()
'Linux'  # or 'Windows'/'Darwin'

platform.system기능은 uname내부적으로 사용합니다 .


1
이 솔루션이 마음에 들지만 문서 Linux에서 Windows, Java또는 빈 문자열을 반환한다고 명시하고 싶습니다 . devdocs.io/python~3.7/library/platform#platform.system
Brandon Benefield

2
@BrandonBenefield에서 열거 형은 가능한 값의 예입니다. Apple 장치에서는 "Darwin"을 반환합니다.
Laurent LAPORTE

15

확인하여 사용중인 OS에 대한 대략적인 아이디어를 얻을 수 있습니다 sys.platform .

해당 정보가 있으면이를 사용하여 os.uname()보다 구체적인 정보를 수집하기에 적합한 전화를하는 것이 적절한 지 판단 할 수 있습니다 . 유닉스 계열 OS에서 Python 시스템 정보 또는 pywin32 와 같은 것을 사용할 수도 있습니다. Windows 용 .

OS를 신경 쓰지 않고 더 심층적 인 검사를 원한다면 psutil 도 있습니다 .


6

더 자세한 정보는 platform모듈에 있습니다.


않는 platform모듈을 통해 어떤 이점을 가지고 sys.platform? 언제 어떤 접근 방식을 사용하고 싶습니까?
matth

@matth : platform모듈 에서보다 자세하고 구조화 된 정보를 얻습니다 . 설명서 링크를 클릭하십시오.
Sven Marnach

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.