我有以下代码:
file = io.open(tFile,'wb')
if cData != '':
file.write('%s\n' % (cData))
其中cData是一个字符串。该代码在Linux和Windows上运行良好,但在我遇到错误的所有Solaris机器上都失败了:
文件“/usr/local/lib/python2.6/io.py”,第1045行,写入 引发TypeError(“无法将unicode写入二进制流”) TypeError:无法将unicode写入二进制流
这里有什么问题?感谢
答案 0 :(得分:2)
io.open
用于与Unicode数据交互。如果要编写字节字符串(即Python 2 str
),请使用内置的open
函数。
如果你真的想使用io.open
,你需要解码你的字符串(如果它是可解码的)
file.write(('%s\n' % (cData)).decode())
或使用Unicode文字
file.write(u'%s\n' % (cData))
我假设你在这里理解基本的字符串编码原则。如果cData
与ASCII不兼容,您需要自己提供适当的编码名称。