我正在Android设备上的termux环境中运行python脚本,我希望能够检测到操作系统是Android。
传统方法行不通:
>>> import platform
>>> import sys
>>> print(platform.system())
'Linux'
>>> print(sys.platform)
'linux'
>>> print(platform.release())
'4.14.117-perf+'
>>> print(platform.platform())
'Linux-4.14.117-perf+-aarch64-with-libc'
还有哪些其他的ooTB选项可用?
一个明显有用的选项是platform.machine()
,它返回armv8
--这不仅仅是“Linux”,它只是体系结构,而不是操作系统,它可能会返回假阳性,例如在树莓派或其他基于arm的系统上。
2条答案
按热度按时间fiei3ece1#
我尝试了
os.uname()
,但没有成功。所以我建议使用子进程,因为uname -o
返回b'Android\n'
。下面是一个简单的Android检查:
yzuktlbb2#
还有一种更简单的方法,它不依赖于使用外部实用程序,而只使用os模块。代码如下:
在Termux和Pydroid 3上返回
True
,但尚未在其他环境上测试这种方法在理论上有缺陷:由于此方法使用os模块提供environmentallist,如果有人更改它或它只是在键中不包含ANDROIDword,即使它是Android平台,那么它将返回
False
编辑:Python 3.7+ 选项/变体
除了版本限制/可用性和可能无法在任何其他实现中实现之外,此选项没有任何缺陷。