TheVaibhavJ
TheVaibhavJ

Reputation: 75

Merge multiple .txt/csv files in Python

I have multiple .txt files in a directory and I want to merge them into one by importing in python. The catch here is that after the merge I want to convert it into one csv file on which the whole program is based.

So far I only had to input one .txt file and converted it into csv file by this code:

import io
bytes = open('XYZ.txt', 'rb').read()
df=pd.read_csv(io.StringIO(bytes.decode('utf-8')), sep='\t', parse_dates=['Time'] )
df.head()

Now I need to input multiple .txt files, merge them and then convert them into csv files. Any workaround?

Upvotes: 0

Views: 1653

Answers (2)

Aditya
Aditya

Reputation: 352

If the headers are same then it should be as easy as this

import os
import io

merged_df = pd.DataFrame()
for file in os.listdir("PATH_OF_DIRECTORY"):
    if file.endswith(".txt"):
        bytes = open(file, 'rb').read()
        merged_df = merged_df.append(pd.read_csv(io.StringIO(
            bytes.decode('utf-8')), sep='\t', parse_dates=['Time']))

print(len(merged_df))

Upvotes: 3

vrana95
vrana95

Reputation: 521

import glob
path="location/of/folder"
allFiles = glob.glob(path + "\\*.txt")

list_ = []
for file in allFiles:
    print(file)
    df = pd.read_csv(io.StringIO(file.decode('utf-8')), sep='\t', parse_dates=['Time'])
    list_.append(df)
combined_files = pd.concat(list_)

Upvotes: 0

Related Questions