Python笔记(五):异常处理和数据存储
注:和上一篇有关联
(一) finally 和 输出异常信息
try:
the_man = open(r'C:\Users\123456\Desktop\test.txt')
print(the_man.readline(),end="")
except IOError as err:
#输出异常信息
print("异常信息:"+ str(err))
#str()转换为字符串
finally:
#不管是否发生异常一定会执行
the_man.close()
(二) 使用 with
(1) 上面的代码如果文件不存在,就不会创建the_man对象,那么执行the_man.close()就会出现NameError错误,所以得先判断是否存在文件 test.txt是否存在
try:
the_man = open('test.txt')
print(the_man.readline(),end="")
except IOError as err:
#输出异常信息
print("异常信息:"+ str(err))
finally:
#不管是否发生异常一定会执行
if 'test.txt' in os.listdir():
#判断当前工作目录是否存在 test.txt 文件,存在时才关闭文件
the_man.close()
(2) 用(1)中的比较麻烦,可以使用with替代,下面的代码等价上面的代码。使用with时,PYTHON会自动去关闭文件。
try:
with open('test.txt') as the_man:
print(the_man.readline(),end="")
except IOError as err:
#输出异常信息
print("异常信息:"+ str(err))
(三) 通过open(),将数据写入文件。
man = [1,2,3]
try:
with open('test.txt','w') as the_man:
print(man,file=the_man)
#man是要写入的数据, file= 是要写入的文件对象
except IOError as err:
#输出异常信息
print("异常信息:"+ str(err))
(四) 将数据长期存储
通过pickle 实现,代码如下。
import pickle
man = [1,2,3]
with open('the_man.pickle','wb') as saveman:
pickle.dump(man,saveman)
#保存数据
with open('the_man.pickle','rb') as resman:
man = pickle.load(resman)
#需要时恢复数据
print(man)
(五) 接上篇(笔记4),判断话是张三还是李四说的,分别添加到不同的列表,并存储到zs.txt和ls.txt中。
(1) 处理文件代码
from FirstPython import the_list as tl
#导入the_list模块
zs = []
ls = []
ww = []
try:
with open(r'C:\Users\123456\Desktop\测试.txt',encoding='UTF-8') as the_file:
for each_line in the_file:
try:
(role,line_spoken) = each_line.split(":",1)
if role =='张三':
# 如果role==张三,将line_spoken添加到man列表
zs.append(line_spoken)
elif role =='李四':
ls.append(line_spoken)
elif role == '王五':
ww.append(line_spoken)
except ValueError:
# 出现ValueError时,直接输出 each_line的值
print(each_line,end="")
the_file.close()
except IOError:
#找不到文件时提示文件不存在
print("文件不存在!")
try:
with open(r'C:\Users\123456\Desktop\zs.txt','w') as the_man:
tl.dslist(zs,the_man)
#调用dslist方法处理列表数据
with open(r'C:\Users\123456\Desktop\ls.txt','w') as the_other:
tl.dslist(ls,the_other)
# 调用dslist方法处理列表数据
except IOError:
print("文件不存在!")
(2) 处理列表数据的函数,模块名:the_list(Python笔记(二)中做过说明,这里做了一点修改)
def dslist(the_list,the_file):
#the_list:要处理的列表数据
#the_file:要写入的文件对象
for each_line in the_list:
if isinstance(each_line,list):
#数据类型是否为列表
dslist(each_line,the_file)
else:
print(each_line,file=the_file,end="")
Python笔记(五):异常处理和数据存储的更多相关文章
- java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)
java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...
- Android(java)学习笔记191:Android数据存储5种方式总结
1.使用文件(File)存储 存储一般的数据 2.使用sharedperference(xml) 存储设置信息.配置信息.密码 3.数据库Sqlite 开源的,嵌入式的数据库,轻量级 4.使用Cont ...
- Python多线程爬虫与多种数据存储方式实现(Python爬虫实战2)
1. 多进程爬虫 对于数据量较大的爬虫,对数据的处理要求较高时,可以采用python多进程或多线程的机制完成,多进程是指分配多个CPU处理程序,同一时刻只有一个CPU在工作,多线程是指进程内部有多个类 ...
- Android(java)学习笔记134:Android数据存储5种方式总结
1.使用文件(File)存储 存储一般的数据 2.使用sharedperference(xml) 存储设置信息.配置信息.密码 3.数据库Sqlite 开源的,嵌入式的数据库,轻量级 4.使用Cont ...
- android学习笔记45——android的数据存储和IO
android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...
- hadoop笔记之Hive的数据存储(视图)
Hive的数据存储(视图) Hive的数据存储(视图) 视图(view) 视图是一种虚表,是一个逻辑概念:可以跨越多张表 既然视图是一种虚表,那么也就是说用操作表的方式也可以操作视图 但是视图是建立在 ...
- hadoop笔记之Hive的数据存储(桶表)
Hive的数据存储(桶表) Hive的数据存储(桶表) 桶表 桶表是对数据进行哈希取值,然后放到不同文件中存储. 比如说,创建三个桶,而创建桶的原则可以按照左边表中学生的名字来创建对应的桶.这样子把左 ...
- hadoop笔记之Hive的数据存储(外部表)
Hive的数据存储(外部表) Hive的数据存储(外部表) 外部表 指向已经在HDFS中存在的数据,可以创建Partition 它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异 外部 ...
- hadoop笔记之Hive的数据存储(分区表)
Hive的数据存储(分区表) Hive的数据存储(分区表) 分区表 Partition对应于数据库的Partition列的密集索引 在Hive中,表中的一个Partition对应于表下的一个目录,所有 ...
随机推荐
- android初探
随着nodejs的不断发展,前端的范围越来越大,所以,适当的了解移动端是非常有必要的,比如使用RN开发app,前端必须要和安卓工程师沟通共同开发,那么学习android的基本知识就很重要了,因为目前安 ...
- TDD并不是看上去的那么美
原文:http://coolshell.cn/articles/3649.html 春节前的一篇那些炒作过度的技术和概念中对敏捷和中国ThoughtWorks的微辞引发了很多争议,也惊动了中国Thou ...
- 到网上收集了一个“高大上”的CSS3登入表单和大家分享一下
要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识. 开发环境 Adobe Dreamweaver CS6 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到演示地址哦): 制作步骤: 一 ...
- 阿里2015校招面试回忆录(成功拿到offer)
1. 引言 继上次“百度2015校园招聘面试题回忆录(成功拿到offer)”文章过后,大家都希望除了题目之外,最好能给出自己当时的回答情况,看看有没有什么回答技巧,这样更有参考价值. 嗯,建议的很对, ...
- NIO的Buffer&Channel&Selector
java的NIO和AIO Buffer position.limit.capacity 初始化 Buffer 填充 Buffer 提取 Buffer 中的值 mark() & reset() ...
- linux中为什么cpu使用率会超过100见解
linux的cpu使用频率是根据cpu个数和核数决定的 top,然后你按一下键盘的1,这就是单个核心的负载,不然是所有核心的负载相加,自然会超过100 如上面 cpu个数是4个,那么cpu可以占到40 ...
- su - oracle /bin/bash: Permission denied
1) 以root身份执行 stat / 命令 查看权限是否正确 2) chmod 755 / 3) chmod 755 /bin/bash
- APIX招聘
- 关于LVS+Nginx为什么会被同时使用的思考
最初的理解 (也可以每个nginx都挂在上所有的应用服务器) nginx大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单.配置简单.相关材料也特别多. lvs是国内的章文嵩博士的大作,比ng ...
- linux下开启、关闭、重启mysql服务
linux下开启.关闭.重启mysql服务命令 一. 启动1.使用 service 启动:service mysql start2.使用 mysqld 脚本启动:/etc/inint.d/mysql ...