如何在二进制模式下将换行符写入文本文件

时间:2016-06-11 16:10:12

标签: python

我正在尝试制作一个包含所有54607个可打印字符的文本文件,但为了便于阅读,每行只有80个字符。

utf_all = ' !"#$'...'
lines   = '\n'.join(utf_all[i:i+80] for i in range(0, 54607, 80))
file    = open('allchars.txt', 'w').write(lines)

返回错误消息

  

UnicodeEncodeError:'charmap'编解码器无法对位置193-243中的字符进行编码:字符映射到<undefined>

如果我尝试对字符进行编码并以二进制模式写入,则忽略换行符\ n并将整个字符串放入一行,并在文件末尾附加换行符。

1 个答案:

答案 0 :(得分:-1)

你的代码在python3.5中对我来说很好用。但是,您将文件作为文本文件打开,这不是您想要的?

如果我用

替换它
open('allchars.txt', 'wb').write(lines)

然后我必须将encode('utf-8')添加到lines

file    = open('allchars.txt', 'wb').write(lines.encode('utf-8'))

编辑: 我的代码:

utf_all = ''.join([chr(i)  for i in range(2**16)])
lines   = '\n'.join(utf_all[i:i+80] for i in range(0, 54607, 80))
file    = open('allchars.txt', 'wb').write(lines.encode('utf-8'))

我的文本编辑器会在80个字符(gedit

之后打开它