- 帖子
- 7
- 精华
- 0
- 积分
- 34
- 阅读权限
- 10
- 注册时间
- 2015-11-8
- 最后登录
- 2016-5-9
|
本帖最后由 我是佩佩学姐 于 2015-11-12 20:48 编辑
非常感谢Cossin先生指点。作为一个从未编程的人,调试完查天气的四节,相当吃力但是收获很多。(推荐用IDLE调试运行)
我按照先生的指点,在每个urlopen面前都增加了异常处理,目前程序调试成功。
现阶段有还有两个关于编码的疑问,还是吃不透,有点晕:
1、为什么在IDLE里面每次运行程序都要提示默认加cp936,但是我们在程序里面的变量如name就必须要用utf8解码才有效?(我试过改成cp936,要么乱码,或者会报错什么gbk....记不清了哈)
2、最后一步,将结果写入,f.write(result) ,我需要去掉result后面的.encode('cp936')才能写入(否则报错:UnicodeDecodeError: 'gbk' codec can't decode bytes in position 122-123: illegal multibyte sequence),如果换成utf-8,一样出错。
按老师指点,增加异常处理后的代码(部分):- try:
- time.sleep(1.0)
- content4=urllib2.urlopen(url4).read()
- code = content4.split('|')[1]
- line=" '%s': '%s',\n" % (name,code)
- result+=line
- print name.decode('utf-8')+':'+code
- except:
- print'%s:查询失败'%name.decode('utf-8')
- result+='}'
- f=file('city2.py','w')
- f.write(result) #需要去掉encode...
- f.close()
复制代码 |
|