cross platform - How can I find the current OS in Python?

ID : 10095

viewed : 20

Tags : pythoncross-platformplatform-specificpython

Top 5 Answer for cross platform - How can I find the current OS in Python?

vote vote

94

If you want user readable data but still detailed, you can use platform.platform()

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

platform also has some other useful methods:

>>> platform.system() 'Windows' >>> platform.release() 'XP' >>> platform.version() '5.1.2600' 

Here's a few different possible calls you can make to identify where you are

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

The outputs of this script ran on a few different systems (Linux, Windows, Solaris, MacOS) and architectures (x86, x64, Itanium, power pc, sparc) is available here: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version

e.g. Solaris on sparc gave:

Python version: ['2.6.4 (r264:75706, Aug  4 2010, 16:53:32) [C]'] dist: ('', '', '') linux_distribution: ('', '', '') system: SunOS machine: sun4u platform: SunOS-5.9-sun4u-sparc-32bit-ELF uname: ('SunOS', 'xxx', '5.9', 'Generic_122300-60', 'sun4u', 'sparc') version: Generic_122300-60 mac_ver: ('', ('', '', ''), '') 

or MacOS on M1

Python version: ['2.7.16 (default, Dec 21 2020, 23:00:36) ', '[GCC Apple LLVM 12.0.0 (clang-1200.0.30.4) [+internal-os, ptrauth-isa=sign+stri']  dist: ('', '', '')  linux_distribution: ('', '', '')  system: Darwin  machine: arm64  platform: Darwin-20.3.0-arm64-arm-64bit  uname: ('Darwin', 'Nautilus.local', '20.3.0', 'Darwin Kernel Version 20.3.0: Thu Jan 21 00:06:51 PST 2021; root:xnu-7195.81.3~1/RELEASE_ARM64_T8101', 'arm64', 'arm')  version: Darwin Kernel Version 20.3.0: Thu Jan 21 00:06:51 PST 2021; root:xnu-7195.81.3~1/RELEASE_ARM64_T8101  mac_ver: ('10.16', ('', '', ''), 'arm64') 
vote vote

90

I usually use sys.platform (docs) to get the platform. sys.platform will distinguish between linux, other unixes, and OS X, while os.name is "posix" for all of them.

For much more detailed information, use the platform module. This has cross-platform functions that will give you information on the machine architecture, OS and OS version, version of Python, etc. Also it has os-specific functions to get things like the particular linux distribution.

vote vote

80

import os print os.name 

This gives you the essential information you will usually need. To distinguish between, say, different editions of Windows, you will have to use a platform-specific method.

vote vote

64

https://docs.python.org/library/os.html

To complement Greg's post, if you're on a posix system, which includes MacOS, Linux, Unix, etc. you can use os.uname() to get a better feel for what kind of system it is.

vote vote

51

Something along the lines:

import os if os.name == "posix":     print(os.system("uname -a")) # insert other possible OSes here # ... else:     print("unknown OS") 

Top 3 video Explaining cross platform - How can I find the current OS in Python?

Related QUESTION?