21

有一些代码给我带来了麻烦。它在我拥有的另一个脚本中运行良好,但我一定是以某种方式把它搞砸了。

: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 帖子中看到的那样,没有用。

4

3 回答 3

70

对我来说,我命名了我的文件csv.py。因此,当我import csv从该文件中导入时,我实际上是在尝试导入同一个文件本身。

于 2014-07-04T16:22:20.683 回答
15

如果您设置了分配给csv(看起来像一个字符串)的东西,那么您正在隐藏模块导入。所以,最简单的事情就是改变分配给csv它的不是模块的东西,然后把它叫做别的东西......

实际上正在发生的事情是:

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

删除进一步的分配csv并从那里开始......

于 2013-08-05T23:10:56.073 回答
0

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

于 2020-10-28T15:10:28.947 回答