2015-04-17 5 views
1

Я пытаюсь выполнить следующую программу для чтения csv-файла в sublime text2 получает сообщение об ошибке «Объект AttributeError: 'module не имеет атрибута' writer '' Любое решение ,AttributeError: объект 'module' не имеет атрибута 'writer'

import sys 
import csv 
def readcsv(): 
    f = open("F://xyz.csv",'r') 
    readerr=csv.reader(f) 
    for row in readerr(): 
     print row 
    f.close() 
readcsv() 

ПОЛНЫЙ ОШИБКА СООБЩЕНИЕ

The current working directory is F:\ Traceback (most recent call last): File "F:\readfiles.py", line 12, in readcsv()
File "F:\readfiles.py", line 7, in readcsv readerr=csv.reader(f) AttributeError: 'module' object has no attribute 'reader' [Finished in 1.4s with exit code 1]

+0

Так же этот файл на самом деле существует? Действительно ли 'f' является действительным файловым объектом? – EdChum

+0

К сожалению, эта ошибка: AttributeError: объект 'module' не имеет атрибута 'reader' –

+0

У вас, очевидно, есть еще один модуль с именем 'csv' в вашем' sys.path' - чтобы узнать, какой именно, просто добавьте строку 'print csv' просто после 'import csv'. –

ответ

4

шаги отладки: -

В идеале csv должен иметь reader модуль. Мое лучшее предположение: у вас есть еще один модуль с именем csv, который имитируется. Вы можете попробовать следующее на питона консоли: -»

>>>import csv 
>>>dir(csv) 

Если вы не можете найти reader, writer и т.д. модули, скорее всего, вы импортируете неправильный модуль с таким же именем. Теперь попробуйте >>>csv.__file__, переименуйте этот файл и повторите предыдущий шаг еще раз.

В целом ваш код может выглядеть вещий следующим образом: -

with open('csvfile.csv', 'rb') as csvfile: 
    rows = csv.reader(csvfile) 
    for row in rows: 
     print row 
0

Синтаксис немного смещен.

для строки в readerr():

скобки синтаксис функции. Команда должна действовать только на объект.

Если вы измените эту строку на это, он будет работать для строки в читателе:

+0

OOPS, пересмотренный синтаксис не попал в ответ для строки в readerr: –