How to Convert Multiple Text Files to a Single CSV in Python?

You can merge multiple text files to a single CSV file in Python by using the glob.glob('./*.txt') expression to filter out all path names of text files in a given folder. Then iterate over all those path names and use the open() function to read the file contents and write append them to the CSV.

Example: merge those files

Here’s the simple example:

import glob

with open('my_file.csv', 'a') as csv_file:
    for path in glob.glob('./*.txt'):
        with open(path) as txt_file:
            txt = txt_file.read() + '\n'
            csv_file.write(txt)
        

The resulting output CSV file shows that all text files have been merged:

You can replace the separator (e.g., from single empty space to comma) by using the txt.replace(' ', ',') function before writing it in the CSV:

import glob

with open('my_file.csv', 'a') as csv_file:
    for path in glob.glob('./*.txt'):
        with open(path) as txt_file:
            txt = txt_file.read() + '\n'
            txt = txt.replace(' ', ',')
            csv_file.write(txt)
        

The resulting CSV is neatly separated with comma characters:

In case you need some more advanced ways to convert the text files to the CSV, you may want to check out the Pandas read_csv() function to read the CSV into a DataFrame.

As soon as you have it as a DataFrame, you can do advanced processing such as merging, column selection, slicing, etc.

🌍 Related Tutorial: How to Read a CSV to a DataFrame?