2015-06-04 2 views
0

Я использую csv-итератор для просмотра файла csv, который содержит данные, связанные со временем. Я уверен, что файл csv верен. Я использую Jupyter, iPython notebook в python 3.x'module' csv не имеет атрибута next

Когда я пытаюсь выполнить итерацию в первой строке с помощью метода .next(), у меня есть объект AttributeError: 'module' не имеет атрибута 'next'.

Мой код разделен на две части, одна часть содержит функцию и импорт, одна часть вызывает их. Функция У меня есть проблема с это:

def get_durations(csvfile): 
    try: 
     csvfile = iter(csvfile) 
    except TypeError, te: 
     print csvfile, 'is not iterable' 
     print "data is", repr(csvfile) 

    first_time = csvfile.next()[5] 
    first_time = (first_time.replace(" ", "")); 
    for row in csvfile: 
     last_time = row[5] 
    last_time = (last_time.replace(" ", "")) 
    first_time = datetime.datetime.strptime(first_time, "%H:%M:%S") 
    last_time = datetime.datetime.strptime(last_time, "%H:%M:%S") 
    return first_time.replace(second = 0), last_time.replace(second = 0) 

Я делаю вызов функции здесь:

for el_mousefile in mousefiles: 
    os.chdir(el_mousefile) 
    print "data is", repr(csvfile) 
    csvfile = csv.reader(open("mouse.csv", "rU"), delimiter=';', quoting=csv.QUOTE_NONE) 
    print "data is", repr(csvfile) 

    try: 
     csvfile = iter(csvfile) 
    except TypeError, te: 
     print csvfile, 'is not iterable' 

    first_time, last_time = get_durations(csv) 

я получаю этот выход при попытке запустить программу:

data is <_csv.reader object at 0x000000000A388D08> 

data is <_csv.reader object at 0x000000000A388948> 

module 'csv' from 'C:\Users\**\AppData\Local\Continuum\Anaconda\lib\csv.pyc' is not iterable 

data is module 'csv' from 'C:\Users\**\AppData\Local\Continuum\Anaconda\lib\csv.pyc' 

96------>first_time = csvfile.next()[5] 

97  first_time = (first_time.replace(" ", "")); 
98  for row in csvfile: 

AttributeError: 'module' object has no attribute 'next' 

Я не понимаю, как мой csv может быть итерабельным во второй части, но затем, когда он передается функции, он больше не итерируется, что отвечает за мою ошибку.

+0

прочитайте, как следует использовать модуль 'csv': https://docs.python.org/3.4/library/csv.html (обязательно используйте' csv.reader' в какой-то момент) - и, пожалуйста, отпечатай ваш правильно. –

+0

хорошо, мой код отступил правильно, но @Ethan Fuman прав, моя ошибка в том, что я передаю csv вместо csvfile .. поэтому мой пост на самом деле не используется. – vbvx

ответ

0
first_time, last_time = get_durations(csv) 

Вы проходите в модуле csv, а не в файле.

Смежные вопросы