I'm working on Python and have defined a variable called "_headers" as shown below
_headers = ('id',
'recipient_address_1',
'recipient_address_2',
'recipient_address_3',
'recipient_address_4',
'recipient_address_5',
'recipient_address_6',
'recipient_postcode',
)
and in order to write this into an output file, I've written the following statement but it throws me the error "AttributeError: 'str' object has no attribute 'write'"
with open(outfile, 'w') as f:
outfile.write(self._headers)
print done
Please help
You want f.write
, not outfile.write
...
outfile
is the name of the file as a string. f
is the file object.
As noted in the comments, file.write
expects a string, not a sequence. If you wanted to write data from a sequence, you could use file.writelines
. eg f.writelines(self._headers)
. But beware, this doesn't append a newline to each line. You need to do that yourself. :)
Assuming that you want 1 header per line, try this:
with open(outfile, 'w') as f:
f.write('\n'.join(self._headers))
print done
To stay as close to your script as possible:
>>> _headers = ('id',
... 'recipient_address_1',
... 'recipient_address_2',
... 'recipient_address_3',
... 'recipient_address_4',
... 'recipient_address_5',
... 'recipient_address_6',
... 'recipient_postcode',
... )
>>> done = "Operation successfully completed"
>>> with open('outfile', 'w') as f:
... for line in _headers:
... f.write(line + "\n")
... print done
Operation successfully completed
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.