Python 如何将多个 .txt 文件转换为 .csv 文件
How to covert multiple .txt files into .csv file in Python
我正在尝试使用 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?
非常感谢。
当然可以。而且这里确实不需要涉及pandas,直接使用标准库csv
模块即可。如果您提前知道列名,最轻松的方法是使用 csv.DictWriter
和 csv.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)
我正在尝试使用 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?
非常感谢。
当然可以。而且这里确实不需要涉及pandas,直接使用标准库csv
模块即可。如果您提前知道列名,最轻松的方法是使用 csv.DictWriter
和 csv.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)