Domec
Domec

Reputation: 87

How to create new csv files from a directories with python?

I have some csv files that i have filtered with this code and it works:

with open('path' , 'r')as f:
            for lines in f:
                if '2020-12-31' in lines:
                    line_data = lines.split(';') 
                    filtered_list.append(line_data)
                    newfile.write(lines)

Firstly i would like do this but for ALL csv file in my folder.

Secondly i would like to do this in prompt command line if possible( with sys?).

i tried:

import os 
from os import walk
from pathlib import Path

dir = r'myPathFolder1' 
target = r'myPathFolder2'
 
filtered_list=[]
for filenames in os.listdir(dir):
    for f in filenames:
        if f.endswith(".csv"):
            newfile = open(dir + f, 'w')
            with open(f , 'r') as t:
                for lines in t:
                    if '2020-12-31' in lines:
                        line_data = lines.split(';') 
                        filtered_list.append(line_data)
                    newfile.write(lines)

But it doesnt work.

Upvotes: 0

Views: 72

Answers (1)

Frederic Chang
Frederic Chang

Reputation: 549

The full code would be, I tried my code, it will copy to another folder.

import os,fnmatch

dir = "C:\\Users\\Frederic\\Desktop\\"
def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if fnmatch.fnmatch(name, pattern):
                result.append(os.path.join(root, name))
    return result
filtered_list = find('*.csv', dir)
print(filtered_list)

for filenames in filtered_list:
    print(filenames)
    for f in filtered_list:
        if f.endswith(".csv"):
            print(f.endswith(".csv"))
            base_dir_pair = os.path.split(f)

            address = "C:\\Users\\Frederic\\Desktop\\aa\\"
            address = address + base_dir_pair[1]
            print(address)
            newfile = open(address, 'w')
            with open(f, 'r') as t:
                print("in1")
                for lines in t:
                    print("in2")
                    if '2020-12-31' in lines:
                        print("in3")
                        line_data = lines.split(';')
                        filtered_list.append(line_data)
                        newfile.write(lines)

Upvotes: 1

Related Questions