从多个txt文件中读取 - 剥离数据并保存到xls

时间:2011-04-06 08:02:43

标签: python excel text

我是python的新手,到目前为止我已经编写了下面的代码,它允许我在文件夹中搜索文本文件,然后从中读取所有行,打开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()

3 个答案:

答案 0 :(得分:3)

可以在

中浓缩
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元素中存在换行符,但后者不会引入换行符本身

答案 1 :(得分:2)

您可以查看this,也可以查看简单需求csv

答案 2 :(得分:2)

这些线条很“有趣”:

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

您正在删除输入文件的前17个中的任意数量,保留第18个(如果存在),删除另外26个(如果存在),并保留以下任何行。这是一个非常不寻常的过程,在您对您要做的事情的描述中根本没有提及。

其次,您将每个输出行(如果有)写入同一输出文件。在脚本的末尾,输出文件将仅包含来自最后一个输入文件的数据。 不要将代码更改为使用附加模式 ...只是为了追加记录而打开和关闭同一个文件是非常浪费的,只有在你真正需要确保如果出现电源或其他故障,数据将刷新到磁盘。在开始阅读文件之前打开输出文件一次,在完成所有输入文件后关闭它一次。

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

编写一个xls文件

第四,您多次提到“列”,但由于您没有提供有关如何将输入行拆分为“列”的任何详细信息,因此很难猜出“下一个可用列”的含义。甚至可能怀疑你是混淆列和行...假设每个输入文件中少于43行,最后一个输入文件的第18行将是你将在输出文件中看到的所有内容。