1
回答
怎么用python去实现几个文件中内容的并行处理

如果我在同一个路径下有三个文件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()



举报
顶部