从多个txt文件读取 – 去掉数据并保存到xls

我是非常新的python,到目前为止,我已经写了下面的代码,它允许我search文件夹中的文本文件,然后读取它的所有行,打开一个Excel文件,并保存在其中的读取行。 (我仍然不确定是否这是所有的文本文件逐一)运行这个,我只看到文件的文本数据被读取并保存到excel文件(第一列)。 或者它可能会覆盖多个文本文件中的数据到同一列,直到完成。 任何人都可以指出我在正确的方向如何让它通过每个文本文件写入剥离的数据到Excel中的下一个可用的列?

import os import glob list_of_files = glob.glob('./*.txt') for fileName in list_of_files: fin = open( fileName, "r" ) data_list = fin.readlines() fin.close() # closes file del data_list[0:17] del data_list[1:27] # [*:*] fout = open("stripD.xls", "w") fout.writelines(data_list) fout.flush() fout.close() 

可以浓缩在

 import glob list_of_files = glob.glob('./*.txt') with open("stripD.xls", "w") as fout: for fileName in list_of_files: data_list = open( fileName, "r" ).readlines() fout.write(data_list[17]) fout.writelines(data_list[44:]) 

你知道writelines()不会引入换行符吗? readlines()在读取期间保持换行符,所以在文件中由writelines()写入的data_list元素中存在换行符,但是后者不会引入换行符本身

你可能想检查这个和简单的需求也CSV 。

这些线是“有趣的”:

 del data_list[0:17] del data_list[1:27] # [*:*] 

您将删除input文件的前17 ,保留第18行(如果存在),删除另外26行(如果存在),并保留任何后续行。 这是一个非常不寻常的程序,在你描述你正在做什么时没有提到。

其次,你正在将输出行(如果有)从每个输出文件写入。 在脚本结尾处,输出文件将只包含来自最后一个input文件的数据。 不要改变你的代码来使用追加模式 …打开和closures相同的文件只是为了追加logging是非常浪费的,只有当你真的需要确保数据被刷新到磁盘遇到电源故障或其他故障。 在开始读取文件之前打开一次输出文件,并在完成所有input文件时closures一次。

第三,任何旧的任意文本文件不会因为您已经命名为“something.xls”而成为“excel文件”。 你应该用csv模块写下它,命名为“something.csv”。 如果您想更好地控制Excel如何解释它,请使用xlwt编写一个xls文件。

第四,你多次提到“专栏”,但是由于你没有给出任何关于你的input行如何被分成“专栏”的细节,所以很难猜测你的“下一个可用专栏”是什么意思。 甚至有可能怀疑你正在混淆列和行……假设每个input文件中less于43行,最后一个input文件的第18行将是你将在输出文件中看到的所有内容。