python常见报错

NameError: 尝试访问一个未申明的变量

>>> foo

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    foo
NameError: name 'foo' is not defined

 

ZeroDivisionError: 除数为零

>>> 1/0

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    1/0
ZeroDivisionError: integer division or modulo by zero

 

SyntaxError: Python 解释器语法错误

>>> for
SyntaxError: invalid syntax

 

IndexError:请求的索引超出序列范围

>>> aList = []
>>> aList[0]

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    aList[0]
IndexError: list index out of range

 

KeyError: 请求一个不存在的字典关键字

>>> aDict={'host':'earth','port':80}
>>> print aDict['server']

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    print aDict['server']
KeyError: 'server'

 

IOError: 输入/输出错误

>>> f=open("blah")

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    f=open("blah")
IOError: [Errno 2] No such file or directory: 'blah'

 

AttributeError: 尝试访问未知的对象属性

>>> class myClass(object):
        pass

>>> myInst = myClass()
>>> myInst.bar = 'spam'
>>> myInst.bar
'spam'
>>> myInst.foo

Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    myInst.foo
AttributeError: 'myClass' object has no attribute 'foo'

    在我们的例子中, 我们在 myInst.bar 储存了一个值, 也就是实例 myInst 的 bar 属性. 属性被定义后, 我们可以使用熟悉的点/属性操作符访问它, 但如果是没有定义属性, 例如我们访问foo 属性, 将导致一个 AttributeError 异常.

 

示例1:

#!/usr/bin/env python
def safe_float(obj):
    try:
        retval=float(obj)
    except (ValueError,TypeError),diag:
        retval=str(diag)
    return retval

print safe_float('12.34')
print safe_float('bad input')
print safe_float({'a':'Dict'})

运行结果:

>>>
12.34
invalid literal for float(): bad input
float() argument must be a string or a number
>>>

 

示例2:

c:\carddata.txt 文件内容如下

# carddata.txt previous balance
25
debits
21.64
541.24
25
credits
-25
-541.24
finance charge/late fees
7.30
5

 

代码:

#!/usr/bin/env python
def safe_float(obj):
    'safe version of float()'
    try:
        retval=float(obj)
    except (ValueError,TypeError),diag:
        retval=str(diag)
    return retval

def main():
    'handles all the data processing'
    log=open(r'c:\cardlog.txt','w')
    try:
        ccfile=open(r'c:\carddata.txt','r')
    except IOError,e:
        log.write('no txns this month\n')
        log.close()
        return

    txns=ccfile.readlines()
    ccfile.close()
    total=0.00
    log.write('account log:\n')

    for eachTxn in txns:
        result=safe_float(eachTxn)
        if isinstance(result,float):
            total += result
            log.write('[%s]: data... processed\n' %eachTxn.strip())
        else:
            log.write('ignored: [%s] \n' % result.strip())
    print '$%.2f (new balance)' % (total)
    log.close()

if __name__=='__main__':
    main()

 

运行结果如下:

>>> ================================ RESTART ================================
>>>
$58.94 (new balance)
>>>

 

cardlog.txt 文件记录内容:

account log:
ignored: [invalid literal for float(): # carddata.txt previous balance]
[25]: data... processed
ignored: [invalid literal for float(): debits]
[21.64]: data... processed
[541.24]: data... processed
[25]: data... processed
ignored: [invalid literal for float(): credits]
[-25]: data... processed
[-541.24]: data... processed
ignored: [invalid literal for float(): finance charge/late fees]
[7.30]: data... processed

[5]: data... processed


转自:http://blog.sina.com.cn/s/blog_6238358c0100gzr5.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值