郁闷,python 0d0a换行问题
import os,sys,zipfile
teststr = open('1.txt').read()
zipFile = zipfile.ZipFile('test.zip','w')
zipFile.writestr('test.txt',teststr)
zipFile.close()
上面的代码,1.txt里的换行是0d0a
可是写到zip里面的test.txt的换行确是0a
为什么?
[解决办法]
文本没所谓吧,压缩一般用2进制读写,所以计较的话python内建open的模式用'rb',或者干脆用zipFile.write开档压缩都应该是一致性...
[解决办法]
二进制处理 teststr = open('test.txt', 'rb').read()
[解决办法]
zipfile里不用管换行是什么吧。文本文件才要注意0d0a或0a
[解决办法]
确实存在这种问题的可能.
因为Python在将字符串从1.txt读取出来之后,会将Windows中的换行(回车换行0d0a)转换成0a,所以,在写入zip文件后就变成了0a。
转换的原因是打开1.txt文件的模式为ASC码方式,也就是以文本方式打开的缘故,以文本方式打开文件,文件的某些字符会被转换。如果不想改变文件中的某些控制字符,那么应该以二进制的方式打开文件,读取文件。