2016-04-18 13 views
0

Ich möchte mehrere CSV-Dateien (mit den gleichen Datentypen/Spalten) öffnen, speichern Sie die Daten in eine Variable einige Daten zu tun und speichern Sie es in einer CSV-Datei. Während ich einfach eine Datei öffnen kann, finde ich keine Möglichkeit, mehrere Dateien zu öffnen. Hier ist mein Code:Python 3: Öffnen mehrerer CSV-Dateien

import numpy as np 
import csv 
from collections import Counter 

files = ['11.csv', '12.csv', '13.csv', '14.csv', '15.csv'] 

with open(files) as csvfile: 
    info = csv.reader(csvfile, delimiter=',') 
    info_types = [] 
    records = 0 
    for row in info: 
     records = row[2] 
     call_types.append(records) 
stats = Counter(call_types).most_common() 
print(stats) 

results = stats 
resultFile = open("Totals.csv",'w') 
wr = csv.writer(resultFile, dialect='excel') 
for output in results: 
    wr.writerow(output) 

Antwort

0

, damit es funktioniert, simultaneouly weniger Fehler anfällig und effizient versuchen, die folgenden.

# required imports 

files = ['11.csv', '12.csv', '13.csv', '14.csv', '15.csv'] 

with open("outfile","wt") as fw: 
    writer = csv.writer(fw) 
    for file in files: 
     with open(file) as csvfile: 
      info = csv.reader(csvfile, delimiter=',') 
      info_types = [] 
      records = 0 
      for row in info: 
       # process row but don't store it 
       # in any list if you 
       # don't have to(that will defeat the purpose) 
       # say you get processed_row 
       writer.writerow(processed_row) 
+0

Vielen Dank. Es hat wie ein Traum funktioniert! Jetzt muss ich herausfinden, wie man die Header für jede Datei nach der ersten überspringen kann. – Chuck

+0

@Chuck Fügen Sie 'header = next (info)' vor 'für row in info:' hinzu. –

+0

Das ist großartig. Danke noch einmal! – Chuck

0

Ich würde dies innerhalb einer Schleife tun. Da Sie die Daten bereits beim Lesen aus der Datei anhängen.

for f in files: 
    with open(f) as csvfile: 
     ...