python中的跨平台代码

Adr*_*ian 2 python

我怎么能在python中编写一些windows代码才能在widnows中运行脚本时执行,如果我应该在linux中运行它,那部分windows代码应该被忽略,这与C++相似:

#ifdef windows
  //code
#endif

#ifdef linux
//code
#endif
Run Code Online (Sandbox Code Playgroud)

我在python中尝试过类似的东西:

if os.name = 'nt':
   #code
Run Code Online (Sandbox Code Playgroud)

但在linux中它给了我一个错误(我使用STARTF_USESHOWWINDOW,女巫给出了错误).

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
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 7

在Python中比在C中要少得多的地方检查平台应该是必要的.如果你真的必须这样做,首选的方法是检查sys.platform而不是os.name.