IOError Нет такого файла или каталога, но файл существует

Следующая программа используется для чтения файла CSV и преобразования его в оператор вставки MySQL:

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()

Я сделал следующие изменения, пытаясь заставить программу работать с несколькими файлами, вместо того, чтобы просто явно указывать имя файла, но постоянно получаю сообщение об ошибке IOError: [Errno 2] No such file or directory: 'Exact name of existing file.csv', когда файл явно существует, поскольку он печатает точное имя файла. Как я могу отредактировать следующий код, чтобы он работал для группы файлов в каталоге без получения указанной ошибки?

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()

1 ответ

Решение

Абсолютный путь подсказывает мне, что вы не запускаете скрипт из этого каталога.

Я считаю, что os.listdir дает вам только имена файлов, а не пути, и эти имена не существуют в каталоге, в котором выполняется скрипт. Вам нужно объединить путь и имя файла!

openFile = open(path + '/' + csvFile)
Другие вопросы по тегам