2016-07-01 20 views
0

Das folgende Programm wird verwendet, um eine CSV-Datei zu lesen und sie in eine MySQL einfügen Anweisung drehen:IOError Keine solche Datei oder das Verzeichnis, aber Datei existiert

import csv 

openFile = open('test.csv', 'r') 
csvFile = csv.reader(openFile) 
header = next(csvFile) 
headers = map((lambda x: "'"+x+"'"), header) 
insert = 'INSERT INTO Table (' + ", ".join(headers) +", 'time_stamp'" +") VALUES " 
for row in csvFile: 
    values = map((lambda x: "'"+x.strip()+"'"), row) 
    print (insert +"("+ ", ".join(values) +", getdate());") 
openFile.close() 

Ich habe die folgenden Änderungen in einem Versuch gemacht Holen Sie das Programm, um mit mehreren Dateien zu arbeiten, anstatt nur den Dateinamen explizit aufzulisten, aber erhalten Sie einen Fehler, IOError: [Errno 2] No such file or directory: 'Exact name of existing file.csv', wenn die Datei eindeutig existiert, da es den genauen Dateinamen druckt. Wie kann ich den folgenden Code bearbeiten, um ihn für eine Gruppe von Dateien in einem Verzeichnis zu verwenden, ohne diesen Fehler zu erhalten?

import csv, os 

path = 'C:/Users/August/Desktop/TripDetailFiles/test' 
for csvFile in os.listdir(path): 
    if csvFile.endswith('.csv'): 
     openFile = open(csvFile) 
    readFile = csv.reader(openFile) 
    header = next(readFile) 
    headers = map((lambda x: "'"+x+"'"), header) 
    insert = 'INSERT INTO Table (' + ", ".join(headers) +", 'time_stamp'" +") VALUES " 
    for row in csvFile: 
     values = map((lambda x: "'"+x.strip()+"'"), row) 
     print (insert +"("+ ", ".join(values) +", getdate());") 
    openFile.close() 

Antwort

1

Der absolute Pfad schlägt mir vor, dass Sie das Skript nicht innerhalb dieses Verzeichnisses ausführen.

Ich glaube, os.listdir gibt Ihnen nur Dateinamen nicht Pfade, und diese Dateinamen existieren nicht in dem Verzeichnis, in dem das Skript läuft. Sie müssen den Pfad und den Dateinamen verketten!

openFile = open(path + '/' + csvFile) 
+0

Ich habe nicht einmal darüber nachgedacht, Sie waren zu 100% korrekt. Danke für die Hilfe! – ThoseKind

+0

Mehr als willkommen @ThoseKind :) – AjahnCharles