使用python将txt文件列表转换为csv文件列表

时间:2020-07-31 18:00:57

标签: python loops csv

我有滚动代码将单个.txt文件转换为单个.csv文件,但是我需要该代码在.txt文件的目录中进行迭代,并给出一个与.txt文件相同的目录,但在中。 csv格式。

import csv

textfile = 'X:/general/DavidOrgEcon/GSTT/text to csv/Group.txt'
outfile = 'X:/general/DavidOrgEcon/GSTT/text to csv/Group.csv'

with open(textfile, 'r') as csvfile:
    In_text = csv.reader(csvfile, delimiter=':')
    all_rows = []
    row_dict = {}
    count_row = 1
    for row in In_text:
        if len(row) > 0:
            row_dict[row[0].strip()] = row[1].strip()
            if count_row % 4 == 0:
                all_rows.append(row_dict)
                row_dict = {}
            count_row += 1
print(all_rows)
keys = all_rows[0].keys()
print(keys)
with open(outfile, 'w', newline='') as output_file:
    dict_writer = csv.DictWriter(output_file, keys)
    dict_writer.writeheader()
    dict_writer.writerows(all_rows)

1 个答案:

答案 0 :(得分:0)

因此,假设您拥有现有功能

def text_to_csv(infilepath, outfilepath):
    ...

它可以从infilepath中读取文本文件并将csv输出到outfilepath,然后您可以创建一个新函数,该函数具有两个目录,并在第一个目录中的每个文本文件上调用它:

import os 

def convert_directory(in_dir, out_dir):
    # Loop through every file in the directory
    for filename in os.listdir(in_dir):
        # Split the file name into a base portion and an extension
        # e.g. "file.txt" -> ("file", ".txt")
        base_name, extension = os.path.splitext(filename)
        # If it is a text file, do the transformation
        if extension == ".txt":
            # Construct the name of the csv file to create
            csv_filename = f"{base_name}.csv"
            # Call your function with the full filepaths
            text_to_csv(
                os.path.join(in_dir, filename),
                os.path.join(out_dir, csv_filename)
            )

convert_directory(
    "X:/general/DavidOrgEcon/GSTT/text to csv/input_dir", 
    "X:/general/DavidOrgEcon/GSTT/text to csv/output_dir",
)