AttributeError: объект 'str' не имеет атрибута 'write'

Я работаю над Python и определил переменную, называемую "_headers", как показано ниже

_headers = ('id',
                'recipient_address_1',
                'recipient_address_2',
                'recipient_address_3',
                'recipient_address_4',
                'recipient_address_5',
                'recipient_address_6',
                'recipient_postcode',
                )

и для того, чтобы записать это в выходной файл, я написал следующий оператор, но он выдает мне ошибку "AttributeError: объект" str "не имеет атрибута" write ""

with open(outfile, 'w') as f:  
            outfile.write(self._headers)  
            print done

Пожалуйста, помогите

Ответ 1

Вы хотите f.write, а не outfile.write...

outfile - это имя файла в виде строки. f - это файловый объект.

Как отмечено в комментариях, file.write ожидает строку, а не последовательность. Если вы хотите записать данные из последовательности, вы можете использовать file.writelines. например f.writelines(self._headers). Но будьте осторожны, это не добавляет новую строку для каждой строки. Вы должны сделать это сами.:)

Ответ 2

Предполагая, что вам нужно 1 заголовок на строку, попробуйте следующее:

with open(outfile, 'w') as f:
    f.write('\n'.join(self._headers))  
    print done

Ответ 3

Как можно ближе к script:

>>> _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