如何在 Python 中将多个 .txt 文件转换为 .csv 文件

Posted

技术标签:

【中文标题】如何在 Python 中将多个 .txt 文件转换为 .csv 文件【英文标题】:How to covert multiple .txt files into .csv file in Python 【发布时间】:2021-08-28 18:12:56 【问题描述】:

我正在尝试使用 Python 将多个文本文件转换为单个 .csv 文件。我目前的代码是这样的:

import pandas
import glob

#Collects the files names of all .txt files in a given directory.
file_names = glob.glob("./*.txt")

#[Middle Step] Merges the text files into a single file titled 'output_file'.
with open('output_file.txt', 'w') as out_file:
    for i in file_names:
        with open(i) as in_file:
            for j in in_file:
                out_file.write(j)

#Reading the merged file and creating dataframe.
data = pandas.read_csv("output_file.txt", delimiter = '/')
  
#Store dataframe into csv file.
data.to_csv("convert_sample.csv", index = None)

如您所见,我正在读取所有文件并将它们合并到一个 .txt 文件中。然后我将其转换为单个 .csv 文件。有没有办法在没有中间步骤的情况下做到这一点?是否有必要将我所有的 .txt 文件连接成一个 .txt 以将其转换为 .csv,或者有没有办法将多个 .txt 文件直接转换为一个 .csv?

非常感谢。

【问题讨论】:

您可能想用评论标记您的“中间步骤”。我认为您的代码没有问题,因为它可以满足您所说的一切需求。 你提前知道列名吗? 是的,列名将提前知道,并且对于所有文本文件都是相同的。一次需要转换 3 到 5 个文本文件。 【参考方案1】:

当然可以。而且你真的不需要在这里涉及pandas,只需使用标准库csv 模块即可。如果你提前知道列名,最轻松的方法是使用csv.DictWritercsv.DictReader对象:

import csv
import glob

column_names = ['a','b','c'] # or whatever


with open("convert_sample.csv", 'w', newline='') as target:
    writer = csv.DictWriter(target, fieldnames=column_names)
    writer.writeheader() # if you want a header
    for path in glob.glob("./*.txt"):
        with open(path, newline='') as source:
            reader = csv.DictReader(source, delimiter='/', fieldnames=column_names)
            writer.writerows(reader)
        

【讨论】:

是的!感谢您注意到 stdlib csv 模块足以满足此要求。令人不安的是,人们愿意添加 pandas 作为仅用于基本 csv 处理的依赖项的频率。 @MichaelRuth 是的,它真的把我逼疯了。

以上是关于如何在 Python 中将多个 .txt 文件转换为 .csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 开发人员中将多个表中的数据导出到多个 .TXT 文件中

如何在 Meson 中将多个文件连接成一个文件?

如何在 Linux 中将文件编码转换为 UTF-8

如何在 Linux 中将文件编码转换为 UTF-8

在 python 中将多个 excel '.xlsx' 转换为 '.csv' 文件时,我得到了额外的列?

如何在 Python 中将 Dictionary 项转换为多个 DataFrame?