Windows上的二进制文件有什么用?

时间:2011-04-05 02:24:08

标签: python windows-xp

我制作了一个脚本来下载文件,但是当我下载二进制可执行文件,swf,图像等时,它只能在Unix / Linux / OSX上运行

\#Modfied section from PWB.py  
import sys  
if sys.version_info<(2,8):  
    import urllib as request  
else:  
    import urllib.request as request  
x=request.urlopen("http://homestarrunner.com/intro.swf")  
y=x.read()  
x.close()  
z=open("intro.swf","w")  
z.write(y)  
z.close() 

我将获取该文件,以及文件中通常不可读的垃圾,但它将无法读取。

似乎二进制文件在Windows上总是存在这些问题。 这是为什么?

PS。我怎么能写下我的python代码才能下载?

4 个答案:

答案 0 :(得分:7)

以二进制模式打开二进制文件。

z = open("intro.swf","wb")

答案 1 :(得分:6)

来自Python 2 documentation

  

在Windows上,“b”附加到模式   以二进制模式打开文件,所以   还有像'rb','wb'这样的模式,   和'r + b'。 Windows上的Python制作了一个   文本和二进制之间的区别   文件;中的行尾字符   文本文件会自动更改   稍微读取或写入数据时。   这种幕后修改   文件数据适用于ASCII文本   文件,但它会破坏二进制数据   像在JPEG或EXE文件中那样。是   非常小心使用二进制模式时   读写这样的文件。上   Unix,附加一个'b'也没有坏处   到模式,所以你可以使用它   平台 - 独立于所有二进制文件   文件。

答案 2 :(得分:0)

在Windows上使用z=open("intro.swf","wb")以二进制模式打开文件。

http://docs.python.org/tutorial/inputoutput.html

答案 3 :(得分:0)

你必须在open()的参数中使用“wb”来使它处于二进制模式 - 默认是文本模式,它将\ n转换为CR / LF。