Python综合整合

2024-10-01 05:06:11 发布

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

我觉得必须有一种更简单(更干净)的方法来使用理解来解析linux上的meminfo文件。文件格式为:

MemTotal:        3045588 kB
MemFree:         1167060 kB
Buffers:          336752 kB
Cached:           721980 kB
SwapCached:            0 kB
Active:           843592 kB
Inactive:         752920 kB
Active(anon):     539968 kB
Inactive(anon):   134472 kB

我试图重写for循环id来使用一个理解,发现我需要其中的3个。。。在

^{pr2}$

我做错什么了?有没有合理的方法来简化这一点?在


Tags: 文件方法idforkblinuxactivecached
3条回答

我发现这个版本更具可读性:

def parse_mem_file(memfile='/proc/meminfo'):
    data = {}
    with open(memfile, 'r') as f:
        for line in f:
            key, value, size = line.split()
            if size == 'kB':
                data[key[:-1]] = int(value)
    return data
d = {}
with open(f) as fin:
    for l in fin:
        x = l.split()
        d[x[0][:-1]] = int(x[1])
return d

另一个解决方案(请注意,我使用了字符串数据—因此在您的情况下,您需要修改代码以从文件中读取数据):

data = """
MemTotal:        3045588 kB
MemFree:         1167060 kB
Buffers:          336752 kB
Cached:           721980 kB
SwapCached:            0 kB
Active:           843592 kB
Inactive:         752920 kB
Active(anon):     539968 kB
Inactive(anon):   134472 kB
"""

res = {}

for line in [x for x in d.split('\n') if x.strip() and ':' in x and 'kB' in x]:
    details = line.split()
    res[details[0][:-1]] = details[-2]

相关问题 更多 >