我正在尝试从psutil
中获取一些数据。具体来说,我想以此顺序获取memory_percentage
和name
数据。
这是代码:
def getListProcessMem():
for proc in psutil.process_iter(attrs=None, ad_value=None):
procInfo = proc.as_dict(attrs=['memory_percent', 'name'])
procInfo = proc.as_dict(attrs=['name', 'cpu_percent'])
theOneProcessList.append(procInfo)
return(theOneProcessList)
getListProcessMem()
output = theOneProcessList
with open('zawarudo.txt', 'w') as f:
for processes in theOneProcessList:
f.write("%s\n" % processes)
问题是,有时输出顺序是错误的,最终导致首先写入进程的name
,然后是mem_prec
。
sed
然后处理数据切割,但是由于有时顺序错误,最终输出文件会出现乱码。
有没有办法保持一致?先记忆,然后命名
答案 0 :(得分:0)
如果要对其进行排序,只需使用dict(sorted(processes.items()))
而不是processes
对dict的重复按照插入顺序进行,示例测试代码如下
>>> p1 = { 'name': 'dummy', 'mem':33}
>>> p2 = {'mem':33, 'name':'dummy'}
>>> print ("%s\n" % p1)
{'name': 'dummy', 'mem': 33}
>>> print ("%s\n" % p2)
{'mem': 33, 'name': 'dummy'}
>>> print ("%s\n" % dict(sorted(p1.items())))
{'mem': 33, 'name': 'dummy'}
>>> print ("%s\n" % dict(sorted(p2.items())))
{'mem': 33, 'name': 'dummy'}