码迷,mamicode.com
首页 > 编程语言 > 详细

python 多文件列相加

时间:2016-06-18 01:37:02      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:python fileinput

多个文件每个文件的同样的第一列的情况下, 第三列相加,没有的就补零

/tmp$ cat a
aa bb 1
dd bb 2
aa bb 3
ee xx 4

/tmp$ cat b
bb cc 1
aa bbb 2
cc dd 3
dd ee 4

/tmp$ cat c
kk mm 3
dd ee 2
aa dd 1
bb ee 5

这个一般awk折腾的多点。 python代码如下:

#!/usr/bin/env python

import sys
import fileinput

fDict = {}

for i in fileinput.input(sys.argv[1:]):
    tmp = i.split()
    fDict.setdefault(tmp[0], [0]*len(sys.argv[1:]))
    fDict[tmp[0]][sys.argv[1:].index(fileinput.filename())] += int(tmp[2])

for i in fDict:
    print i," ".join([ str(j) for j in fDict[i] ])

结果:

/tmp$ ./f.py a b c
aa 4 2 1
bb 0 1 5
ee 4 0 0
dd 2 4 2
kk 0 0 3
cc 0 3 0


之前以为 fileinput.fileno 就是正在处理文件的index,结果是:

fileinput.fileno()
Return the integer “file descriptor” for the current file. When no file is 
opened (before the first line and between files), returns -1.

好吧,这下记住了。

python 多文件列相加

标签:python fileinput

原文地址:http://abian.blog.51cto.com/751059/1790436

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!