Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162309
  • 博文数量: 16
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 195
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-29 08:28
文章分类

全部博文(16)

文章存档

2015年(1)

2010年(15)

我的朋友

分类: Python/Ruby

2010-01-31 00:09:24

不多说了,代码如下:

#!/usr/bin/python
# -*- coding:utf-8 -*-

import urllib2

url = raw_input('请输入下载地址:')
sock = urllib2.urlopen(url)
rcv = sock.read()
sock.close()

name = url.split('/')[-1]
f = open(name,'w')
f.write(rcv)
f.close()

比如在windows系统下,当输入http://www.google.cn/intl/zh-CN/images/logo_cn.gif这个图片下载地址的时候,download的图片文件竟然是这样的

而在linux系统下面则下载正常:

这到底是哪里出的问题呢?


没人帮忙,自己解决吧!

原来,图片属于二进制文件,保存二进制文件时,需要告诉python,否则python直接当成文本文件处理了

Windows中,python在写文本文件的时候,如果碰到\n,自动添加\r(如果本来就有\r就另当别论了)来符合Windows文本文件的规范。在写二进制文件的时候,则不会有这样的处理。

既然明白了原理,把上面的修改一下就可以了:

f = open(name, 'w') 修改成 f = open(name, 'wb')

这个问题再次证明了世界上没有灵异事件,只有未揭开的谜底……


 

阅读(2616) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~