简体   繁体   中英

Converting a list of txt files into a list of csv files with python

I have the rolling code to convert a single.txt file into aa single.csv file, but I need the code to iterate over a directory of.txt files and gives out a directory of the same.txt files but in.csv format.

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)

So assuming you have your existing function

def text_to_csv(infilepath, outfilepath):
    ...

which can read a text file from infilepath and output the csv to outfilepath, then you can make a new function that takes two directories and calls it on every text file in the first:

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",
)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM