gpt4 book ai didi

python - 我应该将什么 python 数据结构和解析器与 Apple 的 system_profiler 一起使用?

转载 作者:行者123 更新时间:2023-11-28 20:54:29 25 4
gpt4 key购买 nike

我的问题是一个模拟问题 http://my.safaribooksonline.com/0596007973/pythoncook2-CHP-10-SECT-17从 2005 年开始使用过时的 xpath 方法最终进入了 Python Cookbook,第二版,我无法使用 10.6 的内置 python(也没有安装旧包)

我想...“检索有关 Mac OS X 系统的详细信息”,每次计算机启动时使用 system_profiler 将其汇总到脚本中(该脚本将在登录时启动)。
我收集的信息因软件版本和硬件配置而异。

示例行是,system_profiler SPSoftwareDataType | grep '引导卷'它返回启动卷名称。我打了 15 到 20 个其他电话以获取信息。

我尝试输出完整的“system_profiler > 数据”并使用 cat 数据解析它 | grep,但如果我像上面的示例一样运行每一行,那显然效率很低,速度会更快。
18 秒,如果输出到文件和 cat | grep.

13 秒(如果单独调用)

*我正在努力让它尽可能快。

我推断我可能需要创建一个字典并使用键来引用数据,但我想知道解析和检索数据的最有效方法是什么?我在别处看到了使用 system_profiler 输出到 XML 并使用 XML 解析器的建议,但我认为可能有一些缓存和解析方法比先输出到文件更有效。

最佳答案

使用 system_profiler 的 -xml 选项将输出格式化为标准的 OS X plist 格式,然后使用 Python 的内置 plistlib解析为您可以自省(introspection)的适当数据结构。一个简单的例子:

>>> from subprocess import Popen, PIPE
>>> from plistlib import readPlistFromString
>>> from pprint import pprint
>>> sp = Popen(["system_profiler", "-xml"], stdout=PIPE).communicate()[0]
>>> pprint(readPlistFromString(sp))
[{'_dataType': 'SPHardwareDataType',
'_detailLevel': '-2',
'_items': [{'SMC_version_system': '1.21f4',
'_name': 'hardware_overview',
'boot_rom_version': 'IM71.007A.B03',
'bus_speed': '800 MHz',
'cpu_type': 'Intel Core 2 Duo',
...

关于python - 我应该将什么 python 数据结构和解析器与 Apple 的 system_profiler 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1392604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com