python: TypeError: can't write str to text stream

I must be doing something obviously wrong here. But what is it, and how do I fix?

Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import io
>>> f1 = io.open('test.txt','w')
>>> f1.write('bingo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:applpython2.6.5libio.py", line 1500, in write
    s.__class__.__name__)
TypeError: can't write str to text stream

edit : In my real application, I won't have a constant string, I'll have a regular string... if unicode is the issue, how do I convert to what io.open requires?


The io module is a fairly new python module (introduced in Python 2.6) that makes working with unicode files easier. Its documentation is at: http://docs.python.org/library/io.html

If you just want to be writing bytes (Python 2's "str" type) as opposed to text (Python 2's "unicode" type), then I would recommend you either skip the io module, and just use the builtin "open" function, which gives a file object that deals with bytes:

>>> f1 = open('test.txt','w')

Or, use 'b' in the mode string to open the file in binary mode:

>>> f1 = io.open('test.txt','wb')

Read the docs for the io module for more details: http://docs.python.org/library/io.html


Try:

>>> f1.write(u'bingo')      # u specifies unicode

Reference


Have you tried writing a Unicode string, instead of just a str ? Ie,

fq.write(u"bingo")

I'm on Mac OS X, but when I tried to write a str , I got the error

TypeError: must be unicode, not str

Writing a Unicode string worked, though.

链接地址: http://www.djcxy.com/p/8568.html

上一篇: 从文件中读取JSON?

下一篇: python:TypeError:无法将str写入文本流