如何“有条件地编译”python

2024-10-01 17:28:18 发布

您现在位置:Python中文网/ 问答频道 /正文

是的,我知道,但这是总结我想做什么的唯一方法。在

要打开串行端口,我想使用:

    portfd = os.open(portname, os.O_RDWR | os.O_NONBLOCK)

问题是,在windows下不存在O_nblock,这意味着它在这里爆炸了。我在windows下测试在一个支持非块的操作系统下的部署。在

因此,我真正想要的是让O峎NONBLOCK消失,或者在windows环境中用0定义它,这样我就可以在没有错误的情况下继续我的业务。在

有什么想法吗?在

注:请不要解释python是如何编译/解释的。我明白了,但我想传达一个想法。在


Tags: 方法端口定义环境oswindows部署错误
3条回答

显然没有编译时/运行时的区别。您可以检查sys.platform的值。在

另一种尚未有人提出的方法:

portfd = os.open(portname, os.O_RDWR | getattr(os, 'O_NONBLOCK', 0))

这是默认任何可能不存在的属性的简单方法。在

你可以使用try/except块

try:
    options = os.O_RDWR | os.O_NONBLOCK
except NameError:
    options = os.O_RDWR

portfd = os.open(portname, options)

这是使用Python方法,请求原谅比请求许可更容易。在

相关问题 更多 >

    热门问题