【pyhton学习笔记】历数那些遇到的错误

制作错误集合真的很重要!现在才慢慢看懂pythonshell是怎么报错的。总结方法:

  • l  语法错!还好IDLE定位准确,python语法结构清晰(严格使用换行、缩进、冒号表示代码的层次与嵌套。你说c类语言的花括号完全可以去掉嘛)。易于排查
  • l  一旦看不懂错误代码,马上百度之。
  • l  在爬虫期间常与http协议的错误打交道,常常是打不开网页,由urlopen()函数抛出错误,HTTP Error ,比如404、403等,以4、5开头。
  • l  在抓取网页、清洗文本时,折腾了编码半天。笨笨的ascii编码器老是不会识别要写入文件的流中的某某字节。于是懂得了要用chardet、decode()、encode()。要r’’才能保全字符串,否则有\或者有数字,容易被转义。
  • l  在文本挖掘期间,错误为文件操作。多为windows的错误,想到os课上学到,操作系统有文件管理的功能
    • n  记得及时file.close()每一个open()的文件!否则,忘了的话,轻则在shell中人工输入命令行file.close(),重则丢失该文件的数据!未关就write(),会读写冲突,所以才丢失数据?
    • n  open(,’a’)的时候,该文件要已经存在,因为,只有已经存在的file才有EOF
  • l  不要等异常在运行时来打断你,要懂得try and catch
  • l  常常print重要的指示性变量,好知道程序运行到了哪里。
  • |  用time模块中的time.clock()时间戳来记录时间,在后期优化代码时很好用的参数


URLError: <urlopen error [Errno 11004] getaddrinfofailed>

 

HTTPError: HTTP Error 403:Forbidden

网页拒绝爬虫

解决:

 

HTTPError: HTTP Error 404: Not Found

但浏览器可以打开

IndexError: list index out ofrange

IOError: [Errno 2] No such fileor directory: 'D:\\Python27\\tiaozhanbei\\newsen\\1.txt'

python 不能建立文件夹

IOError: [Errno 2] No such fileor directory: 'D:\\Python27\\tiaozhanbei\\newscn\\1.txt'

'D:\\Python27\\tiaozhanbei\\newscn\\1.txt'

IOError: [Errno 22] invalid mode ('w') or filename:

1.txt会变成x01.txt

试过:'D:\Python27\tiaozhanbei\newscn\1.txt'

D:\\Python27\\tiaozhanbei\\newscn\\1.txt'

'D:\\Python27\tiaozhanbei\newscn\\1.txt'

解决:r'D:\Python27\tiaozhanbei\newscn\1.txt'

 

IOError: [Errno 22] invalid mode('w') or filename: 'D:\\Python27\tiaozhanbei\newscn\x01.txt'

'D:\Python27\tiaozhanbei\newscn\1.txt'

 

IOError: [Errno 22] invalid mode('w') or filename: 'D:\\Python27\tiaozhanbei\newscn\x01.txt'

'D:\Python27\tiaozhanbei\newscn\1.txt'

TypeError: 'NoneType' object isnot callable

AttributeError: 'NoneType' object has no attribute'renderContents'

TypeError: decode() argument 1must be string, not None

http://tech.it168.com/a2015/0210/1705/000001705887.shtml

这篇新闻提取的正文为空,为啥?

解决:

用了return还执行html = html.decode(infoencode,'ignore')。现在试着用else

unindent does not match any outer

语法错误:缩进没对齐

UnicodeDecodeError: 'ascii' codeccan't decode byte 0xe5 in position 12: ordinal not in range(128)

原因就是python的str默认是ascii编码,和unicode编码冲突,

import sys

reload(sys)

sys.setdefaultencoding('utf8')

 

UnicodeDecodeError: 'ascii' codeccan't decode byte 0xe5 in position 12: ordinal not in range(128)

【解决】http://my.oschina.net/u/1156339/blog/363160

加sys,则无法运行下一步

在file.write(contenttitle+u'\n')中出错

str为unicode,而网页用utf-8

【】encode()  decode()

#!/usr/bin/env python

#coding=utf-8

import sys

print sys.getdefaultencoding()

显示为ASCII

UnicodeDecodeError: 'gbk' codeccan't decode bytes in position 11-12: illegal multibyte sequence

UnboundLocalError: local variable'content' referenced before assignment

 

展开阅读全文

没有更多推荐了,返回首页