python - 如何使用 Python 将多个文本文件中的数据提取到 Excel? (每张一个文件的数据)

标签 python excel openpyxl

到目前为止,为了让我的代码从文本文件读取并导出到 Excel,我有:

import glob

data = {}
for infile in glob.glob("*.txt"):
    with open(infile) as inf:
        data[infile] = [l[:-1] for l in inf] 

with open("summary.xls", "w") as outf:
    outf.write("\t".join(data.keys()) + "\n")
    for sublst in zip(*data.values()):
        outf.write("\t".join(sublst) + "\n")

这样做的目的是获取特定文件夹中的所有文本文件。

但是,当我运行它时,Excel 给我一个错误提示,

“文件无法打开,因为:在文档的顶层无效。第 1 行,位置 1。outputgooderr.txt outputbaderr.txt。fixed_inv.txt

注意:outputgooderr.txt、outputbaderr.txt.、fixed_inv.txt是我要导出到Excel的文本文件名,一个文件一张。

当我只有一个文件供程序读取时,它能够提取数据。不幸的是,这不是我想要的,因为我有多个文件。

请让我知道我可以解决这个问题的任何方法。一般来说,我是编程的初学者,非常感谢任何建议!谢谢。

最佳答案

如果您不反对将输出的 excel 文件作为 .xlsx 而不是 .xls,我建议您使用 Pandas 的一些功能。 .特别是pandas.read_csv()DataFrame.to_excel()

我提供了一个完全可重现的示例,说明您可以如何执行此操作。请注意,我在前 3 行中创建了 2 个 .txt 文件用于测试。

import pandas as pd
import numpy as np
import glob

# Creating a dataframe and saving as test_1.txt/test_2.txt in current directory
# feel free to remove the next 3 lines if yo want to test in your directory
df = pd.DataFrame(np.random.randn(10, 3), columns=list('ABC'))
df.to_csv('test_1.txt', index=False)
df.to_csv('test_2.txt', index=False)

txt_list = [] # empty list
sheet_list = [] # empty list

# a for loop through filenames matching a specified pattern (.txt) in the current directory
for infile in glob.glob("*.txt"): 
    outfile = infile.replace('.txt', '') #removing '.txt' for excel sheet names
    sheet_list.append(outfile) #appending for excel sheet name to sheet_list
    txt_list.append(infile) #appending for '...txt' to txtt_list

writer = pd.ExcelWriter('summary.xlsx', engine='xlsxwriter')

# a for loop through all elements in txt_list
for i in range(0, len(txt_list)):
    df = pd.read_csv('%s' % (txt_list[i])) #reading element from txt_list at index = i 
    df.to_excel(writer, sheet_name='%s' % (sheet_list[i]), index=False) #reading element from sheet_list at index = i 

writer.save()

输出示例:

Expected Output

关于python - 如何使用 Python 将多个文本文件中的数据提取到 Excel? (每张一个文件的数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48772006/

相关文章:

python 3-x : Nested list in a for loop - how to get a "horizontal" output

python - 为 Django 模型中的可选字段提供默认值

python - Web2py 票证无效链接

python - tensorflow 展平方法之间的区别

vba - 当我使用 Range.Cells() 引用单个单元格时出现错误 1004

vba - 当行数变化时使用worksheet_calculate

python - 如何使用openpyxl设置图表标签的间隔单位

python - 在嵌套 for 循环中将值存储在不同变量中

python - 使用 Openpyxl 将 IF 公式插入 excel 后出现 "@"符号

python - openpyxl max_row 和 max_column 错误地报告了一个更大的数字