我将从OSX命令输出中获取特定数据,样本 -
我的代码:
import os
import json
import plistlib
import subprocess
import datetime
def _LogicalDrive():
tmp_l = []
output = subprocess.Popen(
"diskutil info -all", shell=True,
stdout=subprocess.PIPE).stdout.read().splitlines()
for x in output:
if 'Device Identifier' in x:
tmp_dict['Identifier'] = x.split(' ')[-1].strip()
tmp_l.append(tmp_dict)
return tmp_l
print _LogicalDrive()
我想从特定密钥获取数据,例如“设备/媒体名称”或其他。
答案 0 :(得分:0)
我认为您正在尝试解析命令输出并对其进行分析。你把它拆分成不同的线是好的。也许,在每一行中用“:\ s +”模式进一步拆分它,并将冒号的左侧部分存储为键,将右侧部分存储为值(可能在字典中)。您可以使用该字典来查询键(冒号的左侧部分)以获取值。
如果你用“:\ s +”存储分割模式,你可以重复使用它;或许添加一个必须指定密钥的参数。
答案 1 :(得分:0)
您可以迭代输出并将每一行拆分为:
,将左侧部分作为键,右侧作为值。
def _LogicalDrive():
tmp_l = []
output = subprocess.Popen(
"diskutil info -all", shell=True,
stdout=subprocess.PIPE).stdout.read()
for x in output.splitlines():
try:
key, value = [c.strip() for c in x.split(':') if ':' in x]
except ValueError:
continue
if 'Device Identifier' in x:
tmp_dict['Identifier'] = value
tmp_l.append(tmp_dict)
return tmp_l