异常处理

有时候我们在写程序的时候会出现错误或者异常,导致程序终止,如下这个例子:

#!/usr/bin/env python
a = 2/0
print(a)

结果提示如下错误:

Traceback (most recent call last):
File "002.py", line 2, in <module>
a = 2/0
ZeroDivisionError: integer division or modulo by zero

上面提示被除数不能为0,从而导致程序运行中断,为了能够让程序正常执行,我们可以添加tey...except...语句:

try:
a = 2/0
print(a)
except Exception as e:
print("除数不能为0")
#raise e # 把异常抛出来
finally:
print("无论发生什么情况,都执行此步。") 结果:
除数不能为0
无论发生什么情况,都执行此步。

上面如果加上了raise e,则会把异常信息打印出来:ZeroDivisionError: integer division or modulo by zero。其中except部分是对错误信息进行处理,finally是不管之前有没有异常,都会执行此步骤。

python标准异常类:

异常名称 描述
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
SystemExit Python 解释器请求退出
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失败
OSError 操作系统错误
WindowsError 系统调用失败
ImportError 导入模块/对象失败
KeyboardInterrupt 用户中断执行(通常是输入^C)
LookupError 无效数据查询的基类
IndexError 序列中没有没有此索引(index)
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
UnboundLocalError 访问未初始化的本地变量
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError Python 语法错误
IndentationError 缩进错误
TabError Tab 和空格混用
SystemError 一般的解释器系统错误
TypeError 对类型无效的操作
ValueError 传入无效的参数
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
Warning 警告的基类
DeprecationWarning 关于被弃用的特征的警告
FutureWarning 关于构造将来语义会有改变的警告
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告

  

模块

模块和目录的区别,看整个文件夹里面是否有__init__.py文件,有就是模块,没有就是普通目录。__init__.py一般是一个空文件。
通常一个.py文件我们就可以称之为一个模块。
a.py
#!/usr/bin/env python
def hello():
print("hello")
hello() def world():
print("world")
world() b.py
#!/usr/bin/env python
import a 运行python b.py结果:
hello
world

如上 ,当我们在b.py中将a.py作为模块导入之后,在运行b.py的时候,直接会运行a.py里面的所有函数,但是如果我们只想要在b.py中调用a.py中指定函数的时候运行,就需要在a.py中加入if __name__ == "__main__":语句:

a.py
#!/usr/bin/env python
def hello():
print("hello") def world():
print("world") if __name__ == "__main__":
hello()
world() b.py
#!/usr/bin/env python
import a
a.hello()
a.world() 运行python b.py之后的结果:
hello
world
由上可以看出,加上if __name__ == "__main__":语句之后,就能满足我们的需求。
总结:
    1、文件夹里面需要有__init__.py文件的才能当做模块使用。
    2、if __name__ == "__main__":语句的使用。
 
内置模块
 
datetime
import datetime
# 下面我们使用的是datetime模块下面的datetime模块,所以使用的时候需要datetime.datetime,为了更方便的使用,也可以直接使用from datetime import datetime
print(datetime.datetime.now()) # 打印当前时间 2018-04-23 09:33:32.055974
print(datetime.datetime.now().year) # 打印当前时间中的年份 2018
print(datetime.datetime.now().month) # 打印当前时间中的月份 4
print(datetime.datetime.now().day) # 打印当前时间中的天 23
print(datetime.datetime.now().hour) # 打印当前时间中的小时 9
print(datetime.datetime.now().minute) # 打印当前时间中的分钟 33
print(datetime.datetime.now().second) # 打印当前时间中的秒 32
print(datetime.datetime.now().microsecond) # 打印当前时间中的毫秒 56063
print(datetime.datetime.now().strftime("%Y-%m-%d")) # 从时间格式转换成字符串,满足"%Y-%m-%d"格式的字符串格式 2018-04-23 09:33:32.055974 --> 2018-04-23
print(datetime.datetime.now().strftime("%c")) # 标准时间,类似于这种格式 Mon Apr 23 09:50:45 2018
print(datetime.datetime.now().strftime("%a")) # 本地简化星期名称 Mon
print(datetime.datetime.now().strftime("%b")) # 本地简化月份名称 Apr
print(datetime.datetime.now().strftime("%d")) # 当前这天是一个月中的第几天 23
# 直接导入datetime模块下面的datetime
#from datetime import datetime
#print(datetime.now())
%Y    带世纪部分的十进制年份
%m   十进制表示的月份
%d    十进制表示的每月的第几天
%H    24小时制的小时
%M    十进制表示的分钟数
%S    十进制的秒数
 
如果我们需要表示昨天、上周等情况:
#!/usr/bin/env python
from datetime import datetime
from datetime import timedelta
now_time = datetime.now() # 当前时间
print(now_time)
b = now_time + timedelta(days = -1) # 一天前
print(b)
c = now_time + timedelta(days = -1,weeks = -1) # 一个周前的前一天
print(c) 结果:
2018-04-23 10:35:40.245370
2018-04-22 10:35:40.245370
2018-04-15 10:35:40.245370
time模块
这个time模块不是datetime下面的那个模块,它是一个单独的模块。
#!/usr/bin/env python
import time
time.sleep(2) # 暂停2秒后,打印
print("Hello")
print(time.time()) # 打印时间戳,即从1970-01-01到现在的秒数 print(time.localtime())
# time.struct_time(tm_year=2018, tm_mon=4, tm_mday=23, tm_hour=10, tm_min=47, tm_sec=59, tm_wday=0, tm_yday=113, tm_isdst=0)
time.strptime(string,[,format]) # 把一个格式化时间字符串转化为struct_time,它和strftime是逆操作。

commands模块

有时候我们需要使用shell命令,就用到了commands模块。

#!/usr/bin/env python
import commands
output = commands.getoutput("ls -ll") # 返回执行完命令后的结果
print(output)
status, output = commands.getstatusoutput("ls -l") # 返回一个元组,如果shell执行成功,第一个值(状态码)是0表示成功,第二个值是shell执行结果
print(status,output)

subprocess模块

和commands模块用法类似,都是用来执行shell命令的。

#!/usr/bin/env python
from subprocess import PIPE,Popen
p = Popen(['ifconfig'],stdout=PIPE)
data = p.stdout.read()
print(data)

python异常处理及内置模块的更多相关文章

  1. python的一些内置模块

    整理了几种python的常用内置模块. 内置函数思维导图:https://www.processon.com/view/link/5c7902b1e4b0168e4200846a re模块 re(re ...

  2. python异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...

  3. Python异常处理 分类: python Raspberry Pi 服务器搭建 2015-04-01 13:22 172人阅读 评论(0) 收藏

    一个程序要保持稳定运行必须要有异常处理,本文将简单介绍Python中的try-except..异常处理语句的使用. 该种异常处理语法的规则是: 执行try下的语句,如果引发异常,则执行过程会跳到第一个 ...

  4. Python 异常处理--raise函数用法

    raise语句手工引发一个异常: "raise" [expression ["," expression ["," expression]] ...

  5. [Python学习笔记][第八章Python异常处理结构与程序调试]

    1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...

  6. python异常处理try,except,else,finally,raise

    先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...

  7. Python 异常处理

    Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...

  8. python异常处理的哲学

    所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事.异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学.限于认知能力和经验所限,不可 ...

  9. Python异常处理总结

    一.何谓异常处理 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这 ...

随机推荐

  1. [PY3]——基本语法

    Python3基本语法-xmind图 常量/变量 1. 常量:一旦赋值就不可再改变.不能对它重新赋值.python不存在常量2. 字面常量:一个单独出现的量,未赋值给任何变量或常量3. 变量: i=3 ...

  2. Django models python3搭载mysql

    1    django默认支持sqlite,mysql, oracle,postgresql数据库.  <1> sqlite django默认使用sqlite的数据库,默认自带sqlite ...

  3. Java工具:native2ascii ---得到中文对应的ASCII编码

    如国际化中,要得到“提交”对应的ASCII编码:

  4. ORACLE: private ,dao中util执行规范,nextval计数把通过nextval插入但已删除的列也统计在内向后计数

    private DAO中的util.rs.sql都应该为private. 其中每个具体方法执行增删改查操作前打开数据库连接,操作完成后关闭数据库连接.操作要规范,不然易出错. nextval seq_ ...

  5. i.mx6 Android5.1.1 servicemanager本地服务

    接在之前的 i.mx6 Android5.1.1 初始化流程之init进程 i.mx6 Android5.1.1 初始化流程之init.rc解析 servicemanager是由init创建的本地服务 ...

  6. js中进行金额计算

    js中进行金额计算parseFloat   在js中进行以元为单位进行金额计算时 使用parseFloat会产生精度问题var price = 10.99;var quantity = 7;var n ...

  7. PictureBox控件

    PictureBox控件可以显示来自位图.图标或者元文件,以及来自增强的元文件.JPEG.GIF文件的图形,如果控件不足以显示整幅图像,则裁剪图像以适应控件的大小. Sizemode 图片的大小方式 ...

  8. [转] .NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱

    为何要转载 一来是最近面试了几家公司,发现问的还都是这些的基础知识,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果. 为什么有人说,不动笔不读书.我现在也是深有体会了,看过的东西不一定会记得 ...

  9. django中的缓存

    对于一个动态网站来说,用户的每次访问都意味着对服务器的一次开销,当该服务器的并发访问非常大时,对于一个动态网站来说,开销会非常的大.所以对于大中型web应用来说,减轻服务器的性能瓶颈就很有必要 对于d ...

  10. iOS开发笔记18:一些编译、开发调试、打包的细节整理

    1.以链库的方式引用第三方库 一些特殊场景可能会要求使用链库的方式使用第三方库,大体设置如下: ①Other Linker Flags里进行设置,格式为-l+库名称 ②Libray Search Pa ...