读一个zip并将其写入另一个文件python

Del*_*lta 5 python zip

我想读一个文件然后把它写回来.这是我的代码:

   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)

Ray*_*ger 9

以二进制模式"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文件中的二进制数据.


Ala*_*Maw 6

手册的这一点:

在Windows上,附加到模式的'b'以二进制模式打开文件,因此还有'rb','wb'和'r + b'等模式.Windows上的Python区分了文本和二进制文件; 读取或写入数据时,文本文件中的行尾字符会自动稍微改变.这种对文件数据的幕后修改适用于ASCII文本文件,但它会破坏像JPEG或EXE文件中的二进制数据.在读取和写入此类文件时要非常小心地使用二进制模式.在Unix上,将'b'附加到模式没有什么坏处,因此您可以独立于平台使用它来处理所有二进制文件.

  • 使用Python 3会变得更糟.在Python中,3个编码在读/写时应用,所有字符串都是Unicode.在简单的演讲中:不仅仅是线路结束可以改变,而且在所有平台上.这意味着当人们在所有平台上使用二进制文件时,他们需要标记文件,否则他们将更难以移植到Python 3. (2认同)