Python小错误
2015-11-23 20:49
465 查看
1.打开文件时,总是出现IOError:[Error:22]......(省略号一般写的是文件名不存在之类的英文)。但是路径与文件名完全正确。
解决方法:在路径前加r或者R,例如:
打开文件时出现异常是因为“\t”被当成了特殊字符进行处理,在前面加上“r/R”,便不会进行转义,才能正确打开文件。
2.打开文件后,文件无法正常读取。错误为:
这个错误一般会出现在for循环中,f.close()一般与前面代码中f=open()的缩进量相同
3.对于超出索引值得理解。
例如爬取的内容索引到11就结束了,而此时定义的range为(0,16),此时就会报错:
原来的理解就是只要范围比要获取的内容大,肯定不会出错。然而恰恰相反,只有定义的索引值小于其索引范围才能正常运行。比如索引范围为(1,6),定义时只要小于6才不会报错,超出6以外没有内容,索引找不到,就会出错了。
建议在使用索引前,都要用len()判断一下长度。
4.正则表达式里的“\”
在正则表达式中,匹配换行,则要写入“\n”;可是要单纯的匹配“\n”,则需要用反斜杠来进行转义,写为“\\n”。
而单独的匹配一个“\”,则需要用“\\”来进行匹配。
5.字典,序列和元组之间的转换
在某次写代码时,突然报了一个错误:
直接声明的字典可以通过list()和tuple()分别转换成列表和元组,而列表和元组无法通过dict()转换成字典类型。
关于列表和元组转换成字典可以这样解决:
6.输出中文时的小错误
在pycharm中写入中文的时候,有时候是会报错的,这时候再前面加一个"u",就可以了。
在Python2.7中,两种写法都可以:
解决方法:在路径前加r或者R,例如:
f=open(r"D:\pythontest\test.txt","w")这是因为原始字符串的一些特性。原始字符串是指没有进行转义的字符。
打开文件时出现异常是因为“\t”被当成了特殊字符进行处理,在前面加上“r/R”,便不会进行转义,才能正确打开文件。
2.打开文件后,文件无法正常读取。错误为:
<span style="font-size:18px;">ValueError: I/O operation on closed file</span>解决方法:修改f.close()的位置,缩进或者前进
这个错误一般会出现在for循环中,f.close()一般与前面代码中f=open()的缩进量相同
3.对于超出索引值得理解。
例如爬取的内容索引到11就结束了,而此时定义的range为(0,16),此时就会报错:
<span style="font-size:18px;">IndexError: list index out of range</span>
原来的理解就是只要范围比要获取的内容大,肯定不会出错。然而恰恰相反,只有定义的索引值小于其索引范围才能正常运行。比如索引范围为(1,6),定义时只要小于6才不会报错,超出6以外没有内容,索引找不到,就会出错了。
建议在使用索引前,都要用len()判断一下长度。
4.正则表达式里的“\”
在正则表达式中,匹配换行,则要写入“\n”;可是要单纯的匹配“\n”,则需要用反斜杠来进行转义,写为“\\n”。
而单独的匹配一个“\”,则需要用“\\”来进行匹配。
5.字典,序列和元组之间的转换
在某次写代码时,突然报了一个错误:
<span style="font-size:18px;">ValueError: dictionary update sequence element #0 has length 1; 2 is required</span>然后查找原因有以下发现:
<span style="font-size:18px;">>>> d={1:'a',2:'b',3:'c'} >>> d {1: 'a', 2: 'b', 3: 'c'} >>> list(d) [1, 2, 3] >>> d {1: 'a', 2: 'b', 3: 'c'} >>> tuple(d) (1, 2, 3) >>> d {1: 'a', 2: 'b', 3: 'c'} >>> a=list(d) >>> a [1, 2, 3] >>> dict(a) Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> dict(a) TypeError: cannot convert dictionary update sequence element #0 to a sequence >>> </span>可以看出:
直接声明的字典可以通过list()和tuple()分别转换成列表和元组,而列表和元组无法通过dict()转换成字典类型。
关于列表和元组转换成字典可以这样解决:
<span style="font-size:18px;">>>> L1=[1,2,3] >>> L2=['a','b','c'] >>> dict(zip(L1,L2)) {1: 'a', 2: 'b', 3: 'c'} >>> t1=(1,2,3) >>> t2=('a','b','c') >>> dict(zip(t1,t2)) {1: 'a', 2: 'b', 3: 'c'}</span>
6.输出中文时的小错误
在pycharm中写入中文的时候,有时候是会报错的,这时候再前面加一个"u",就可以了。
在Python2.7中,两种写法都可以:
相关文章推荐
- python中print不换行的方法
- python的高性能web应用的开发与测试实验
- python StringIO类
- Python猜数字游戏
- python字符串分割
- python requests库学习
- SQL学习:mysql数据库备份和使用日志恢复+python调用mysql方法(4)
- python里面写中文报错
- Python之可读写的socket逻辑
- Python之自动化修改软件包版本号&日期
- python3.4爬虫抓取豆瓣热门250本书
- python后台运行flash跨域服务器
- 20本最好的免费的Python书籍
- K-近邻算法之Python实现
- python中函数参数
- <LeetCode><Medium> 5 Longest Palindromic Substring #爆发式搜索
- Python基础(装饰器)
- python绘图工具reportlab介绍
- 随机出算术题
- Python 按行读取文本文件 缓存 和 非缓存实现