python csv.read завершается ошибкой на второй итерации - PullRequest
1 голос
/ 25 ноября 2011

мой код выглядит примерно так:

for filename in files:
  with open(filename, 'rb') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=';')
    values=list(csvreader)
  dosomething()

У меня есть около 10 файлов, которые я хочу обработать, и он работает без проблем для первого файла.но когда python пытается начать обработку второго файла, он говорит, что

Traceback (most recent call last):
File "plot.py", line 20, in <module>
values=list(csvreader)
TypeError: 'list' object is not callable

есть у кого-нибудь идея, почему это не сработает?

Ответы [ 3 ]

5 голосов
/ 25 ноября 2011

Где-то вы использовали (глобальную, если проблема здесь обнаруживается) переменную с именем list для хранения экземпляра списка.Это плохая идея.Имя list ищется каждый раз, когда оно используется, и эта переменная находится в предпочтении перед фактическим типом list, который вам нужен (т.е. для создания списка из результатов csvreader).

1 голос
/ 25 ноября 2011

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

1 голос
/ 25 ноября 2011

Сообщение об ошибке предполагает, что список переопределяется где-то за пределами предоставленного вами блока кода. Например:

>>> list = list()
>>> list()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable

Убедитесь, что у вас нет привязки к другому объекту в другом месте вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...