How do I check if I'm running on Windows in Python? [duplicate] How do I check if I'm running on Windows in Python? [duplicate] python python

How do I check if I'm running on Windows in Python? [duplicate]


Python os module

Specifically for Python 3.6/3.7:

os.name: The name of the operating system dependent module imported. The following names have currently been registered: 'posix', 'nt', 'java'.

In your case, you want to check for 'nt' as os.name output:

import osif os.name == 'nt':     ...

There is also a note on os.name:

See also sys.platform has a finer granularity. os.uname() gives system-dependent version information.

The platform module provides detailed checks for the system’s identity.


Are you using platform.system?

 system()        Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'.        An empty string is returned if the value cannot be determined.

If that isn't working, maybe try platform.win32_ver and if it doesn't raise an exception, you're on Windows; but I don't know if that's forward compatible to 64-bit, since it has 32 in the name.

win32_ver(release='', version='', csd='', ptype='')        Get additional version information from the Windows Registry        and return a tuple (version,csd,ptype) referring to version        number, CSD level and OS type (multi/single        processor).

But os.name is probably the way to go, as others have mentioned.


For what it's worth, here's a few of the ways they check for Windows in platform.py:

if sys.platform == 'win32':#---------if os.environ.get('OS','') == 'Windows_NT':#---------try: import win32api#---------# Emulation using _winreg (added in Python 2.0) and# sys.getwindowsversion() (added in Python 2.3)import _winregGetVersionEx = sys.getwindowsversion#----------def system():    """ Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'.            An empty string is returned if the value cannot be determined.       """    return uname()[0]


You should be able to rely on os.name.

import osif os.name == 'nt':    # ...

edit: Now I'd say the clearest way to do this is via the platform module, as per the other answer.