郁闷,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
zip不用管,但把ZIP解压后,换行就不是原来的换行了。
确实存在这种问题的可能.
因为Python在将字符串从1.txt读取出来之后,会将Windows中的换行(回车换行0d0a)转换成0a,所以,在写入zip文件后就变成了0a。
转换的原因是打开1.txt文件的模式为ASC码方式,也就是以文本方式打开的缘故,以文本方式打开文件,文件的某些字符会被转换。如果不想改变文件中的某些控制字符,那么应该以二进制的方式打开文件,读取文件。
相关问答:
在list中添加一个类的局部变量 这样做是否合法 请看下面例子:
Python code:
class A():
def __init__( self ):
self.__a = 0
self.__b = 'hello'
def get_a( self ):
ret ......
>>> x=-1
>>> if x>0:
print ('11')
>>> else:
SyntaxError: invalid syntax (<pyshell#20>, line 1)
网上搜的也是:
>>> x=int(input("Please ent ......
IronPython中的功能太少了,很多常用的Python模块都没有,也加上不。
还得用CLR来扩展。
搞到方法了,如下:
Python code:
import sys #导入sys module;
sys.path.append("c:/Python24/Lib") ......
例子是这样的:
>>> str1 = '小狗'
>>> str1
'小狗'
>>> str1.encode('utf-8')
b'\xe5\xb0\x8f\xe7\x8b\x97'
>>> str2 ......