Adrian
Adrian

Reputation: 20058

Cross platform code in python

How can I write in python some windows code to execute only when I am running the script in widnows, if I should run it in linux, that part of the windows code should be ignored, something simillar to this, in C++:

#ifdef windows
  //code
#endif

#ifdef linux
//code
#endif

I tried something like this in python:

if os.name = 'nt':
   #code

But in linux it gives me an error(I am using STARTF_USESHOWWINDOW, witch gives error).

startupinfo = None
if sys.platform == 'win32':
    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= _subprocess.STARTF_USESHOWWINDOW #error here
    startupinfo.wShowWindow = _subprocess.SW_HIDE # error here

Traceback (most recent call last):
  File "/home/astanciu/workspace/test/src/main.py", line 10, in <module>
    import _subprocess
ImportError: No module named _subprocess

Upvotes: 3

Views: 4808

Answers (2)

Sven Marnach
Sven Marnach

Reputation: 601351

Checks for the platform should be necessary at much fewer places in Python than in C. If you really have to do it, the preferred way is to check sys.platform rather than os.name.

Upvotes: 7

NPE
NPE

Reputation: 500157

You can have conditional code based on the value of os.name using the correct comparison operator (==):

if os.name == 'nt':
   #code

Upvotes: 3

Related Questions