Python小错误

来源:互联网 发布:快速剪辑软件 编辑:程序博客网 时间:2024/06/05 20:44

1.打开文件时,总是出现IOError:[Error:22]......(省略号一般写的是文件名不存在之类的英文)。但是路径与文件名完全正确。

解决方法:在路径前加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中,两种写法都可以:





0 0