zoukankan      html  css  js  c++  java
  • Python基础24 try-except的文件例子

      1 ##以下是书本上的例子
      2 #可以选择性观看
      3 
      4 #先补充一个知识点
      5 #open()函数
      6 #open(file,mode='r',buffering=-1,encoding=None,newline=None,closefd=True,opener=None)
      7 #1.file 文件,可以是字符串或者是数字,如果是字符串型的文件,文件名可以填写当前相对路径也可以填写绝对路径
      8 #   但是如果文件名是一个整数,那就是指向的一个打开的文件
      9 #       补充解释:
     10 #               1.相对路径
     11 #                       表示在当前路径下,目标文件的位置,比如我是C盘Desktop文件夹中打开的程序
     12 #                       C:UsersadminDesktopPythonD1
     13 #                       目标文件D1就不需要写全了,相对路径就只用写PythonD1
     14 #               2.绝对路径
     15 #                       完全写全文件的位置
     16 
     17 #2.mode 设置文件打开的模式
     18 #   r-只读 w-写入 x-独占创建模式(找不到文件会创建然后进行写入状态)
     19 #   a-追加模式(文件存在,追加到文件末尾) b-二进制模式 t-文本模式(默认)+-更新模式
     20 
     21 #3.buffering 设置缓冲区参数,默认值为-1,表示让系统来自动分派,如果填0就是关闭缓冲区
     22 #   数据直接写入文件,一般只在二进制文件中使用
     23 
     24 #4.encoding 表示用来打开文件时的文件编码  errors 表示抛出异常时怎么处理
     25 #
     26 #5.newline  用来设置换行模式
     27 #
     28 #6.closefd  opener 这两个参数是在file为文件描述符时使用(就是file时整数)
     29 #       closefd为True时,文件调用close()方法关闭,同时也会关闭描述符对应的文件
     30 #       closefd为False时,文件对象调用close()方法关闭文件,但不会关闭文件描述符所对应的文件
     31 #       opener用于打开文件时执行一些操作,opener参数执行一个函数,该函数返还一个文件描述符
     32 
     33 #我们现在使用中,只管一个file就可以了
     34 #
     35 # 
     36 
     37 def read_date_form_file(filename):
     38     try:
     39         file=open(filename)
     40         in_date=file.read()
     41         in_date=in_date.strip()
     42         date=dt.datetime.strptime(in_date,"%Y-%m-%d")
     43         return date
     44     except ValueError as e:
     45         print("处理ValueError异常")
     46         print(e)
     47     except FileNotFoundError as e:
     48         #没有找到文件
     49         print("处理FileNotFoundError异常")
     50         print(e)
     51     except OSError as e:
     52         #输入输出异常
     53         print("处理OSError异常")
     54         print(e)
     55 
     56 date_1=read_date_form_file('date_source.txt')
     57 print("日期={0}",format(date_1))
     58 #抛出错误处理FileNotFoundError异常
     59 #表示没有找到文件
     60 
     61 #date_1=read_date_form_file('C:/Users/admin/source/repos/Rush_B/Rush_B/yichang/date_source.txt')
     62 #注意,这里调用文件填写路径的时候
     63 #要把所有的转化成/,因为如果填写的是那么系统会将其当作转义字符
     64 #会比较麻烦
     65 #print("日期={0}",format(date_1))
     66 #AttributeError: 'builtin_function_or_method' object has no attribute 'strip'
     67 #结果报错了
     68 #他表示不认识上面的 strip方法 表示没有在类中找到这个方法
     69 #通过查询,我们发现这个方法是使用在str类型上面的
     70 
     71 string="516	545
    999
    "
     72 print(string)
     73 #这里现在的数据是有转义符的
     74 #我们通过strip()方进行修改
     75 #可以去除字符串头和尾的空格和转义符
     76 string=string.strip()
     77 print(string)
     78 #这里我们看到虽然中间的转义符都执行了
     79 #但是末尾的转义符却被删除了
     80 #在strip的()内,我们可以写入数据来表示
     81 #删除末尾和开头的这个数据
     82 string=string.strip('5')
     83 print(string)
     84 #这样开头的5就被删除了
     85 #我们也可以通过在strip前面添加字母来表示删除前还是后
     86 string=string.lstrip('1')   #删除前面的1
     87 string=string.rstrip('9')   #删除后面的9
     88 print(string)
     89 #关于str.strip()的讨论暂时结束了
     90 #回到之前的话题来
     91 
     92 #找到了错误的原因了
     93 #前面在调用read方法的时候忘记加上()了
     94 date_1=read_date_form_file('C:/Users/admin/source/repos/Rush_B/Rush_B/yichang/date_source.txt')
     95 print("日期={0}",format(date_1))
     96 #这样我们就完成了数据的调用
     97 
     98 #那么我们对FileNotFoundError的异常测试一下
     99 date_2=read_date_form_file('C:/Users/admin/source/repos/Rush_B/Rush_B/yichang/fakething.txt')
    100 print("日期={0}",format(date_2))
    101 #[Errno 2] No such file or directory: 'C:/Users/admin/source/repos/Rush_B/Rush_B/yichang/fakething.txt'
    102 #表示可以正常运行except的内容
    103 
    104 #我们再调换一下OSError和FileNotFoundError
    105 def read_date_form_file_2(filename):
    106     try:
    107         file=open(filename)
    108         in_date=file.read()
    109         in_date=in_date.strip()
    110         date=dt.datetime.strptime(in_date,"%Y-%m-%d")
    111         return date
    112     except ValueError as e:
    113         print("处理ValueError异常")
    114         print(e)
    115 
    116     except OSError as e:
    117         #输入输出异常
    118         print("处理OSError异常")
    119         print(e)
    120 
    121     except FileNotFoundError as e:
    122         #没有找到文件
    123         print("处理FileNotFoundError异常")
    124         print(e)
    125 
    126 date_3=read_date_form_file_2('C:/Users/admin/source/repos/Rush_B/Rush_B/yichang/fake.txt')
    127 print("日期={0}",format(date_3))
    128 #我们发现,上面的例子报出错误是 FileNotFoundError
    129 #这里爆出的错误是 OSError
    130 #但是本质反应的错误是一样的,原因是OSError是FileNotFoundError的父类
    131 
    132 #补充我的file是内容就是2000-10-25
    133 #存放位置也就是和当前这个Py文件放在的一起
    悟已往之不谏,知来者之可追
  • 相关阅读:
    浅尝辄止——在C++中调用C#的回调函数——COM方式
    代码管理——如何连接Git Server,下载代码
    浅尝辄止——使用ActiveX装载WPF控件
    软件调试——CPU异常列表
    软件调试——IA-32 保护模式下寄存器一览
    Delphi面向对象编程
    看雪2017CTF第二题解法
    串操作指令
    MASM 重复汇编
    MASM 宏结构
  • 原文地址:https://www.cnblogs.com/ljh-study/p/13884780.html
Copyright © 2011-2022 走看看