Python CSV没有属性' Writer'

时间:2013-08-05 22:58:51

标签: csv python-2.7 nonetype

有一些代码给我带来了麻烦。它在我的另一个剧本中运作得很好,但我必须以某种方式弄乱它。

if csv:主要是因为我在argparser中依赖于-csv选项。但即使我在if statement之外使用适当的缩进来运行它,它仍会返回相同的错误。

import csv

if csv:
    with open('output.csv', 'wb') as csvfile:
        csvout = csv.writer(csvfile, delimiter=',',
            quotechar=',', quoting=csv.QUOTE_MINIMAL)
        csvout.writerow(['A', 'B', 'C'])
        csvfile.close()

给我:

Traceback (most recent call last):
  File "import csv.py", line 34, in <module>
    csvout = csv.writer(csvfile, delimiter=',',
AttributeError: 'str' object has no attribute 'writer'

如果我删除if statement,我会:

Traceback (most recent call last):
  File "C:\import csv.py", line 34, in <module>
    csvout = csv.writer(csvfile, delimiter=',',
AttributeError: 'NoneType' object has no attribute 'writer'

我做错了什么傻事?我确实尝试将文件名更改为test.py之类的东西,因为我在另一篇SO帖子中看到它,但没有用。

3 个答案:

答案 0 :(得分:47)

对我来说,我已将我的文件命名为csv.py。所以当我从该文件中import csv时,我本质上是试图导入同一个文件。

答案 1 :(得分:14)

如果您设置的内容分配给csv(看起来像一个字符串),那么您将隐藏模块导入。所以,最简单的方法就是改变分配给不是模块的csv的任何内容,并将其称为其他内容......

实际上发生的事情是:

import csv
csv = 'bob'
csvout = csv.writer(somefile)

删除对csv的进一步分配,然后从那里开始......

答案 2 :(得分:0)

就我而言,我的函数名称恰好是csv()。重命名函数后,错误消失了。