您的位置:首页 > 编程语言 > Python开发

Python小错误

2015-11-23 20:49 465 查看
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中,两种写法都可以:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: