跨平台编程在Python中的实现

3

如果我在Windows上运行脚本,如何使用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

1
这应该是 if os.name == 'nt': 吗? - Brendan Long
1
使用 sys.platform 怎么样? - helpermethod
@ 帮助方法:仍然存在相同的错误。 - Adrian
回溯指向一个包含导入语句的模块级别行。当然,这个导入语句会被执行。 - user395760
1
将导入语句移至if语句内部,以便仅在Windows上执行。 - Sven Marnach
显示剩余6条评论
2个回答

7

在Python中,与C相比,在很少的情况下需要检查平台。如果确实需要这样做,首选的方法是检查sys.platform而不是os.name


我已经这样做了:如果sys.platform == 'win32',但仍然是一样的,Windows代码会被编译。 - Adrian

3

您可以根据 os.name 的值编写条件代码,并使用正确的比较运算符(==):

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接