我正在安卓设备上的白蚁环境中运行python脚本,我希望能够检测到操作系统是安卓的。
传统的方法行不通:
>>> import platform
>>> import system
>>> 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的系统。
发布于 2020-06-01 14:48:58
我尝试了os.uname(),但没有成功。因此,我建议使用子进程,因为uname -o返回b'Android\n'。
下面是一个关于Android的简单检查:
import subprocess
subprocess.check_output(['uname', '-o']).strip() == b'Android'发布于 2021-08-15 21:08:58
有更简单的方法不依赖于使用外部实用程序,而只使用os模块。这是代码:
import os # import **os** module, since we need it's *environ* variable
def isAndroid() -> bool: # function for fast usage
for item in list(os.environ.keys()): # checks every **key** in **os.environ** dict
if "ANDROID" in item.upper(): # if **key** contains word **ANDROID** then return True and break [Edit: Add `.upper()` so we can detect in lowercase env variables too]
return True
return False # returns False if no match happened返回True在Termux和Pydroid 3上,但尚未在其他环境中进行测试
这种方法理论上存在缺陷:由于该方法使用了由os模块提供的环境列表,如果有人对其进行更改,或者即使是Android平台,它也只是在键中不包含ANDROID单词,那么它将返回False。
编辑:Python 3.7+选项/变体
import sys
is_android: bool = hasattr(sys, 'getandroidapilevel') # Availability = 3.7+除了版本限制/可用性之外,该选项没有任何缺陷,并且可能不会在任何其他实现中实现。
https://stackoverflow.com/questions/62134556
复制相似问题