有一些代码给我带来了麻烦。它在我的另一个剧本中运作得很好,但我必须以某种方式弄乱它。
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帖子中看到它,但没有用。
答案 0 :(得分:47)
对我来说,我已将我的文件命名为csv.py
。所以当我从该文件中import csv
时,我本质上是试图导入同一个文件。
答案 1 :(得分:14)
如果您设置的内容分配给csv
(看起来像一个字符串),那么您将隐藏模块导入。所以,最简单的方法就是改变分配给不是模块的csv
的任何内容,并将其称为其他内容......
实际上发生的事情是:
import csv
csv = 'bob'
csvout = csv.writer(somefile)
删除对csv
的进一步分配,然后从那里开始......
答案 2 :(得分:0)
就我而言,我的函数名称恰好是csv()
。重命名函数后,错误消失了。