Python中的跨平台代码

3 投票
2 回答
4567 浏览
提问于 2025-04-16 14:45

我想知道怎么在Python里写一些代码,让它只在Windows系统下执行。如果我在Linux上运行这个脚本,Windows的那部分代码就应该被忽略。就像在C++中那样:

#ifdef windows
  //code
#endif

#ifdef linux
//code
#endif

我在Python里试过类似的代码:

if os.name = 'nt':
   #code

但是在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

2 个回答

3

你可以根据 os.name 的值来写一些有条件的代码,使用正确的比较符号 (==) 来进行判断:

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

在Python中,检查平台的地方应该比在C语言中少得多。如果你真的需要这么做,推荐的方式是检查 sys.platform,而不是 os.name

撰写回答