注:和上一篇有关联

(一)  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笔记(五):异常处理和数据存储的更多相关文章

  1. java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)

    java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...

  2. Android(java)学习笔记191:Android数据存储5种方式总结

    1.使用文件(File)存储 存储一般的数据 2.使用sharedperference(xml) 存储设置信息.配置信息.密码 3.数据库Sqlite 开源的,嵌入式的数据库,轻量级 4.使用Cont ...

  3. Python多线程爬虫与多种数据存储方式实现(Python爬虫实战2)

    1. 多进程爬虫 对于数据量较大的爬虫,对数据的处理要求较高时,可以采用python多进程或多线程的机制完成,多进程是指分配多个CPU处理程序,同一时刻只有一个CPU在工作,多线程是指进程内部有多个类 ...

  4. Android(java)学习笔记134:Android数据存储5种方式总结

    1.使用文件(File)存储 存储一般的数据 2.使用sharedperference(xml) 存储设置信息.配置信息.密码 3.数据库Sqlite 开源的,嵌入式的数据库,轻量级 4.使用Cont ...

  5. android学习笔记45——android的数据存储和IO

    android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...

  6. hadoop笔记之Hive的数据存储(视图)

    Hive的数据存储(视图) Hive的数据存储(视图) 视图(view) 视图是一种虚表,是一个逻辑概念:可以跨越多张表 既然视图是一种虚表,那么也就是说用操作表的方式也可以操作视图 但是视图是建立在 ...

  7. hadoop笔记之Hive的数据存储(桶表)

    Hive的数据存储(桶表) Hive的数据存储(桶表) 桶表 桶表是对数据进行哈希取值,然后放到不同文件中存储. 比如说,创建三个桶,而创建桶的原则可以按照左边表中学生的名字来创建对应的桶.这样子把左 ...

  8. hadoop笔记之Hive的数据存储(外部表)

    Hive的数据存储(外部表) Hive的数据存储(外部表) 外部表 指向已经在HDFS中存在的数据,可以创建Partition 它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异 外部 ...

  9. hadoop笔记之Hive的数据存储(分区表)

    Hive的数据存储(分区表) Hive的数据存储(分区表) 分区表 Partition对应于数据库的Partition列的密集索引 在Hive中,表中的一个Partition对应于表下的一个目录,所有 ...

随机推荐

  1. 基于.Net + SqlServer的分库分表设计方案

    在说分库分表之前,先简单介绍下网站架构,这样有助于理解为何需要分库分表这种技术.因为所有的技术,大多都是因为业务的需要而产生的. 1.网站发展的第一阶段 大致架构如下,因为没有多少用户访问,所以单台服 ...

  2. 客户端禁用cookie

    如果客户端禁用cookie的话不影响session使用 的设置方法: <sessionState     cookieless="AutoDetect"

  3. 到网上收集了一个“高大上”的CSS3登入表单和大家分享一下

    要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识. 开发环境 Adobe Dreamweaver CS6 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到演示地址哦): 制作步骤: 一 ...

  4. maven-compiler-plugin 指定jdk的版本和编码

    为了让maven的jdk编译版本一致, 使用maven-compiler-plugin插件来协助管理 建议新建maven项目后的第一步就是配置该插件 <build> <plugins ...

  5. Linux的僵尸进程及其解决方法

    1. 产生原因: 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.通过ps命令查看其带有defunct的标志.僵尸进程是一个 ...

  6. ASP.NET MVC提交一个较复杂对象至WCF Service

    前一篇<jQuery.Ajax()执行WCF Service的方法>http://www.cnblogs.com/insus/p/3727875.html 我们有练习在asp.net mv ...

  7. 使用iframe实现同域跨站提交数据

    有一个已经编译的asp.net 1.1的网站.为了改进录入的效率,改为由barcode扫描枪来替代手动.由于在扫描枪添加其它信息.原录入窗口已经无法适应.另外程序虽然跑的是存储过程,但交易的trans ...

  8. AutoMapper之集合和数组映射

    9.集合和数组映射 在项目中,集合和数组使用的很多的,继续下来就讲讲他们的映射,很简单. /// <summary> /// 源对象 /// </summary> public ...

  9. 基于asp.net mvc的近乎产品开发培训课程(第四讲)

    演示产品源码下载地址:http://www.jinhusns.com/Products/Download  演示产品源码下载地址:http://www.jinhusns.com/Products/Do ...

  10. C# 将dll打包到程序中

    本文告诉大家如何把 dll 打包到程序中.很多时候的 软件 在运行的时候需要包括很多 dll 或其他的文件,这样的软件在给其他小伙伴,就需要做一个压缩包,或者用安装软件.这样感觉不太好,所以本文告诉大 ...