首页 > 代码库 > Python文件处理程序一例

Python文件处理程序一例

刚才某个运维交流群中有个同学提出了以下需求:

abc 124
cba 234
abc 356
cba 244

ddd  234
我想计算这样一个文件里面第一列相同名称的 第二列和,有什么简单方法?结果要类似下面的
abc 480
cba 378


之后有位shell的大牛很快提出了解决方案:

awk ‘{a[$1]+=$2}END {for (i in a)print i,a[i]}‘ test.txt
sysadmin@sysadmin-VirtualBox:~$ cat test.txt 
abc 124
cba 234
abc 356
cba 244
cba 23232
abc 2323
ddd 234
sysadmin@sysadmin-VirtualBox:~$ awk ‘{a[$1]+=$2}END {for (i in a)print i,a[i]}‘ test.txt 
abc 2803
cba 23710
ddd 234

本人的awk实在不怎么会用,所以真心佩服这位大牛i_f48.gif

后来仔细想了想,这个需求可以用python的字典来实现,花了小二十分钟才写出来哈哈。。。

#!/usr/bin/python
dict = {}
spath1 = ‘/home/sysadmin/test.txt‘
f1 = open(spath1,‘r‘)
for line in f1.readlines():
    a = line.split()[0]
    b = line.split()[1]
    if dict.has_key(a):
        c = int(dict[a]) + int(b)
        dict[a] = c
    else:
        dict[a] = b
for key in dict:
    print key,dict[key]

不过俗话说得好:不积跬步无以至千里嘛i_f27.gif


本文出自 “葡萄呀 Enjoy your life” 博客,请务必保留此出处http://bxuan.blog.51cto.com/376592/1584052

Python文件处理程序一例