我有一堆文本文件,每个文件都包含一些数据。我想整理这些数据然后写一个包含所有数据的新文件。
预期产量: 给定目录中包含相同大小输出的文本文件列表,以便将此信息收集到单个文件中。
例如。如果text_file1.txt包含:
A B C
2 7 8
text_file2.txt包含:
A B C
3 6 9
和text_file3.txt包含:
A B C
3 6 8
result.csv应如下所示:
A B C
2 7 8
3 6 9
3 6 8
到目前为止我的代码
import os
import glob
import re
import pandas
def collate_PE_results(self,directory,qualifier,outfile):
os.chdir(directory) #cd to directory
all_files=os.listdir(directory) #list all the files in this directory
text_files=glob.glob('*.txt') # select text files only
for i in range(1,len(text_files)): #iterate over all the text files
p = re.compile(qualifier) #compile a string to search in the text file
if p.search(text_files[i]): #search for the qualifier in the text file
with open(text_files[0]) as f: # first match initiates the data frame
df = pandas.read_csv(text_files[0],sep='\t')
else:
df.append(pandas.read_csv(text_files[i]),sep='\t') # the rest of the matches are appended onto the bottom of the growing dataframe
df.to_csv(outfile,sep=',',header=df.keys())
此代码运行并写入.csv文件,但包含错误的信息 - 即第2行没有标题的单行数据。任何人都可以建议如何修改我的代码以获得我想要的东西吗?感谢
--------------- ---------------------编辑
要调用此函数,我正在创建父类的实例
CT=Copasi_Tools.Cluster_Tools()
然后:
CT.collate_PE_results(directory,qualifier='Result',outfile) #Each file containing information has the word 'Result' in the file name