[Tutor] Stumped Again
steve at pearwood.info
Sun Oct 31 02:21:06 CET 2010
Terry Green wrote:
> Am running this Script and cannot figure out how to close my files,
> Keep getting msg: Attribute Error: '_csv.writer' object has no attribute
Lesson one: we're not mind readers. To be able to give you useful
advise, we need to see the ACTUAL error and not a summary taken out of
context. Otherwise we're left with making sarcastic replies like
"because it doesn't have an attribute called 'close'", which makes us
feel good but doesn't help you.
Python prints a traceback showing the exact error, including the full
traceback of where it happens. Please COPY AND PASTE the FULL traceback.
Do NOT summarize it, re-type it from memory, describe it in your own
words, or otherwise change it in any way. The only exception is if the
traceback is *huge*, you should say so, and only show the last few
entries. If we need to see the rest, we'll tell you.
Lesson two: we rarely need to, and never want to, see your entire
script. Best practice is for you to simplify the problem to the smallest
piece of code that still fails in the same way. This has three advantages:
(1) By working through the problem yourself, 7 out of 10 times you'll
work out what the problem is yourself. You will have learned a valuable
(2) By making the problem small, rather than big, you improve the
chances that others will have the time and motivation to solve it for you.
(3) You make our life easier, which means we will be kindly disposed to
you and be more likely to help.
In this case, I think I can solve the problem very easily, using the
>>> import csv
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'builtin_function_or_method' object has no attribute 'close'
csv.writer doesn't have a close method, just because that's how it is.
There's nothing to close. What you need to close is the file object you
pass to the csv.writer.
fp = open('c:/users/terry/downloads/tup1012k/tup1012.csv', 'w')
output = csv.writer(fp)
# do stuff with output
# then close the underlying file object, not the writer.
More information about the Tutor