从多个文件中读取一行并写入一个文件

时间:2014-05-22 05:51:32

标签: python multiple-files

我有大约45,000个文件。我的目的是从每个文件中提取一行,并将它们累积在单个文件中。

我尝试使用glob.glob,但问题是使用此模块时,文件的顺序似乎是混合的。

filin= diri+ '*.out'
list_of_files = glob.glob(filin)
print list_of_files 
with open("A.txt", "w") as fout:
    for fileName in list_of_files:
        data_list = open( fileName, 'r' ).readlines()
        fout.write(data_list[12])

以上是我使用的代码。主要是,我借用了这个论坛中的某些代码。

我想按顺序读取所有“.out”文件。每个文件都包含一分钟间隔的数据。例如,一个文件包含2014 / 1/1 / 00:00的数据,后续文件包含数据在2014/1/1 / 00:01。所以按顺序阅读这些文件非常重要。但是,当我使用glob.glob并打印list_of_files时,文件顺序似乎很复杂。我可以解决这个问题吗?

另外,如上所示,我想从每个文件的顶部读取第12行,但结果重复显示“超出索引”。

问题似乎不是很有条理。任何想法或帮助都会非常感激。

P.S文件的名称如下:Data_201308032343.out,Data_201308032344.out,Data_201308032345.out ......

谢谢。

2 个答案:

答案 0 :(得分:2)

os.listdir documentation所述,目录条目以任意顺序返回。如果您想申请特定订单,您需要确保自己:

list_of_filenames = glob.glob(input_fileglob)
sorted_list_of_filenames = sorted(list_of_filenames)

with open("A.txt", 'w') as outfile:
    for filename in sorted_list_of_filenames:
        data_list = open(filename).readlines()
        outfile.write(data_list[12])

答案 1 :(得分:1)

list_of_files = sorted(glob.glob(filin))

data_list [12]读取文件的第13行,因为它是零索引列表。这可能是"指数超出范围的原因"异常。