Skip to content Skip to sidebar Skip to footer

Seperate Files To Folders And Sub Folders Using Python Script

In below code all the output files are getting written into T1 folder. How to separate those output files into sub folders, with the same name as original sub folders (where the or

Solution 1:

This should help

Demo:

import pandas as pd
import numpy as np
import glob
import os

path = '/root/Desktop/TT1/'
mystep = 0.4#define the functiondefdata_splitter(df, name, dest_folder):
    max_time = df['Time'].max() # get max value of Time for the current csv file (df)
    myrange= np.arange(0, max_time, mystep) # build the threshold range
    basepath = "/root/Desktop/"for k inrange(len(myrange)):
        # build the upper values 
        temp = df[(df['Time'] >= myrange[k]) & (df['Time'] < myrange[k] + mystep)]
        dest_f = os.path.join(basepath, dest_folder)
        ifnot os.path.isdir(dest_f):
            os.mkdir(dest_f)
        temp.to_csv(os.path.join(dest_f, "{}_{}.csv".format(name, k)))

# use os.walk(path) on the main path to get ALL subfolders inside pathfor root,dirs, files in os.walk(path):
    for f in files:
        if f.endswith(".csv"):
            filename = os.path.join(root, f)
            df = pd.read_csv(filename)
            name = os.path.split(os.path.basename(filename))[1]
            dest_folder = os.path.basename(os.path.dirname(filename))
            data_splitter(df, name, dest_folder)

Solution 2:

A similar approach should work here:

import pandas as pd
import numpy as np
import glob
import os

input_root = '/root/Desktop/TT1'
output_root = '/root/Desktop/T1'

mystep = 0.4#define the functiondefdata_splitter(input_file, output_path, output_basename):

    df = pd.read_csv(input_file)
    max_time = df['Time'].max() # get max value of Time for the current csv file (df)
    myrange = np.arange(0, max_time, mystep) # build the threshold rangefor k inrange(len(myrange)):
        # build the upper values 
        temp = df[(df['Time'] >= myrange[k]) & (df['Time'] < myrange[k] + mystep)]
        temp.to_csv(os.path.join(output_path, f"{output_basename}_{k}.csv"))


# use os.walk(path) on the main path to get ALL subfolders inside pathfor dirpath, dirnames, filenames in os.walk(input_root):
    for filename in filenames:
        if filename.lower().endswith('.csv'):
            input_file = os.path.join(dirpath, filename)
            sub_folders = dirpath[len(input_root)+1:]
            output_path = os.path.join(output_root, sub_folders)
            os.makedirs(output_path, exist_ok=True)  # Ensure the output folder exists
            output_basename = os.path.join(output_path, os.path.splitext(filename)[0] + '.csv')

            data_splitter(input_file, output_path, output_basename)

This should result with the folder structure recreated at your output root folder.

Post a Comment for "Seperate Files To Folders And Sub Folders Using Python Script"