我有大约 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 的数据,后续文件包含数据at 2014/1/1/00:01。所以按顺序读取这些文件非常重要。但是,当我使用上面的 glob.glob 和 print list_of_files 时,文件顺序似乎很困惑。我可以解决这个问题吗?
另外,如上所示,我想从每个文件的顶部读取第 12 行,但结果反复显示“超出索引”。
这个问题看起来组织得不太好。任何想法或帮助将不胜感激。
P.S 文件名如:Data_201308032343.out、Data_201308032344.out、Data_201308032345.out ……
谢谢。
最佳答案
如 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])
关于python - 从多个文件中读取一行并写入一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23798754/