资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Python永久存储和异常处理的方法是什么

本篇内容介绍了“Python永久存储和异常处理的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联专业为企业提供安多网站建设、安多做网站、安多网站设计、安多网站制作等企业网站建设、网页设计与制作、安多企业网站模板建站服务,10年安多做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

Python之永久存储(pickle模块)

存储成一个二进制数列

存放:pickling

读取:unpickling

永久存储一个列表

>>> import pickle

>>> my_list = [123,3.14159,'China',['another list']]

>>> pickle_file = open('E:\hyx02\Python学习\my_list.pkl','wb')

>>> pickle.dump(my_list,pickle_file)

>>> pickle_file.close

my_list.pkl中的后缀名写什么都可以。

上面的dump()方法:

pickle.dump(obj, file, [,protocol])

序列化对象,将对象obj保存到文件file中去。参数protocol是序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)。file表示保存到的类文件对象,file必须有write()接口,file可以是一个以'w'打开的文件或者是一个StringIO对象,也可以是任何可以实现write()接口的对象。

测试一下刚才的存储结果:

>>> pickle_file = open('E:\hyx02\Python学习\my_list.pkl','rb')

>>> my_list2 = pickle.load(pickle_file)

>>> print(my_list2)

[123, 3.14159, 'China', ['another list']]

代码中的rb:二进制形式

同理:

永久存储一个字典

我们可以利用这种方法把数据做成一个数据包

例如:把一个字典(很多城市的信息)写成一个包

>>> import pickle

>>> pickle_file=open('E:\hyx02\Python学习\city_data.aaa','wb')

>>> city={'北京':'简称“京”,古称燕京、北平,是中华人民共和国首都、省级行政区、直辖市、国家中心城市、超大城市。'}

>>> pickle.dump(city,pickle_file)

>>> pickle_file.close()

然后调用时:

>>> import pickle

>>> pickle_file=open('E:\hyx02\Python学习\city_data.aaa','rb')

>>> city2 = pickle.load(pickle_file)

>>> city2

{'北京': '简称“京”,古称燕京、北平,是中华人民共和国首都、省级行政区、直辖市、国家中心城市、超大城市。'}

就可以精简程序了

Python之异常处理(Exception)

file_name = input('请输入需要打开的文件名:')

f = open(file_name)

print('文件的内容是:')

for each_line in f:

print(each_line)

输入错误文件名:抛出找不到文件异常FileNotFoundError

FileNotFoundError: [Errno 2] No such file or directory: 'aaa'

Python永久存储和异常处理的方法是什么

常见异常

AssertionError:断言语句(assert)失败

>>> my_list = ['aaaaa']

>>> assert len(my_list) > 0

>>> my_list.pop()

'aaaaa'

>>> assert len(my_list) > 0

Traceback (most recent call last):

File "", line 1, in

assert len(my_list) > 0

AssertionError

抛出AssertionError异常,assert作为程序中间的检查点

如下图:

Python永久存储和异常处理的方法是什么

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

>>> my_list.aaa

Traceback (most recent call last):

File "", line 1, in

my_list.aaa

AttributeError: 'list' object has no attribute 'aaa'

抛出AttributeError异常,如下图:

Python永久存储和异常处理的方法是什么

IndexError:索引超出序列的范围

KeyError:不存在的Key

>>> my_dict = {'one':1,'two':2,'three':3}

>>> my_dict['fout']

Traceback (most recent call last):

File "", line 1, in

my_dict['fout']

KeyError: 'fout'

抛出KeyError异常,如下图:

#用get()方法不会抛异常

Python永久存储和异常处理的方法是什么

NameError:访问不存在的变量

OSError:操作系统产生的异常,有很多,比如最开始的FileNotFoundError就属于OSError

OverflowError:数值运算超出最大限制,Python中不常见

SyntaxError:Python的语法错误

>>> print 'aaa'

SyntaxError: Missing parentheses in call to 'print'. Did you mean print('aaa')?

抛出语法错误,没有括号,要变成函数调用的形式

如下图:

郑州哪家人流医院好 http://3g.zyfuke.com/

Python永久存储和异常处理的方法是什么

TypeError:无法计算,例如不同类型之间运算

ZeroDivisionError:除数为0

异常检测

try_except语句

try:

检测范围

except Exception[as reason]:

出现异常(Exception)后的处理代码

例子:

try:

f = open('xxx.txt')

print(f.read())

f.close()

except OSError as reason:

print('文件出错啦~\n错误的原因是:'+str(reason))

except TypeError as reason:

print('类型出错啦~\n错误的原因是:'+str(reason))

运行结果如下图:

Python永久存储和异常处理的方法是什么

try:

sum = 1 + '1'

f = open('xxx.txt')

print(f.read())

f.close()

except OSError as reason:

print('文件出错啦~\n错误的原因是:'+str(reason))

except TypeError as reason:

print('类型出错啦~\n错误的原因是:'+str(reason))

运行结果如下图:

Python永久存储和异常处理的方法是什么

也可以合并写作:

except (OSError,TypeError) as reason:

print('出错啦~\n错误的原因是:'+str(reason))

但是不推荐上述try_except语句,比如由于程序中断而导致的没有关闭文件,于是有: try-finally语句

try-finally语句

try:

检测范围

except Exception[as reason]

出现异常(Exception)后的处理代码

finally:

无论如何都会被执行的代码

例子:

try:

f = open('xxx.txt')

print(f.read())

sum = 1 + '1'

except (OSError,TypeError) as reason:

print('出错啦~\n错误的原因是:'+str(reason))

finally:

f.close()

raise语句

>>> raise ZeroDivisionError('除数为0的异常')

显示上述解释内容

Python永久存储和异常处理的方法是什么

“Python永久存储和异常处理的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


新闻标题:Python永久存储和异常处理的方法是什么
标题来源:http://cdkjz.cn/article/jesgge.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220