我想读一个文件然后把它写回来.这是我的代码:
file = open( zipname , 'r' )
content = file.read()
file.close()
alt = open('x.zip', 'w')
alt.write(content )
alt.close()
Run Code Online (Sandbox Code Playgroud)
这不起作用,为什么?????
编辑:
重写的文件已损坏(Windows上的python 2.7.1)
以二进制模式"rb"和"wb"进行读写:
f = open(zipname , 'rb')
content = f.read()
f.close()
alt = open('x.zip', 'wb')
alt.write(content )
alt.close()
Run Code Online (Sandbox Code Playgroud)
文本模式在Windows上不起作用的原因是从'\ r \n'到'\ r'的换行符翻译了zip文件中的二进制数据.
从手册的这一点:
在Windows上,附加到模式的'b'以二进制模式打开文件,因此还有'rb','wb'和'r + b'等模式.Windows上的Python区分了文本和二进制文件; 读取或写入数据时,文本文件中的行尾字符会自动稍微改变.这种对文件数据的幕后修改适用于ASCII文本文件,但它会破坏像JPEG或EXE文件中的二进制数据.在读取和写入此类文件时要非常小心地使用二进制模式.在Unix上,将'b'附加到模式没有什么坏处,因此您可以独立于平台使用它来处理所有二进制文件.