我有大约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 ......
谢谢。
答案 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行,因为它是零索引列表。这可能是"指数超出范围的原因"异常。