如果我在同一个路径下有三个文件a.txt,b.txt,c.txt,三个文件中的内容分别是:
a.txt: b.txt: c.txt:
aaa 2 bbb 5 aaa 8 #中间的空格代表一个tab键
bbb 3 cca 6 bba 9
cca 4 ccc 2 bbb 5
ccc 7
经过处理后我得到一个文件d.txt
aaa 2 0 8
bba 0 0 9
bbb 3 5 5
cca 4 6 0
ccc 0 2 7
之前我有写一个代码,处理成功了,,可是我是先把每个文件中的前面的第一列统计出来,然后再一行行地去写入后面的数字的,,运行起来太慢了,,加上我们要统计的数据太大,现在运行了好几天都没有出结果。现在老师让我两个文件两个文件的进行比较,因为每个文件中第一列都是排好序的,所以只要一行一行地进行比较。。我弄了有段时间了,还是没搞好,,,不知道哪位哥们能帮帮忙,,给我指点一下。我之前写得代码如下:
import os
import time
start=time.clock()
currenPath=os.getcwd()
fileList=os.listdir(currenPath)
#print(fileList)
outputfile=open('d.txt','a')
outputfile.write('tuple_name'+'\t')
input_file_list_2=[]
for item in fileList:
itemLength=len(item)
if item[itemLength-10:itemLength]=='sorted.txt':#这是我要处理的文件。是以sorted.txt为结尾的
filelist2=open(item,'r')
input_file_list_1=[]
for line in filelist2:
temp=line[0:-1].split('\t')
tuple_name_new_1=temp[0]
tuple_count=temp[-1]
input_file_list_1.append(tuple_name_new_1)
for tuple_name_new_2 in input_file_list_1:
if tuple_name_new_2 not in input_file_list_2:
input_file_list_2.append(tuple_name_new_2)
else:
continue
outputfile.write(item[0:-4]+'\t')
inputfile_new= input_file_list_2
inputfile_new.sort()
print(inputfile_new)
#print(len(inputfile_new))
outputfile.write('\n')
for tuple_name in inputfile_new:
outputfile.write(tuple_name)
#print(tuple_name)
for item in fileList:
itemLength=len(item)
if item[itemLength-10:itemLength]=='sorted.txt':
#print(item)
filelist2=open(item,'r')
input_file_list=[]
input_file_dic={}
for line in filelist2:
temp=line[0:-1].split('\t')
tuple_name_new_2=temp[0]
tuple_count=temp[-1]
input_file_list.append(tuple_name_new_2)
input_file_dic[tuple_name_new_2]=tuple_count
#print(input_file_list)
#print(input_file_dic)
if tuple_name in input_file_dic:
outputfile.write('\t'+input_file_dic[tuple_name]+'\t')
else:
outputfile.write('\t'+'0'+'\t')
outputfile.write('\n')
end=time.clock()
print(end-start)
filelist2.close()
outputfile.close()