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:\Users\admin\Desktop\Python\D1
 13 #                       目标文件D1就不需要写全了,相对路径就只用写Python\D1
 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\t545\n999\n"
 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文件放在的一起

 

posted @ 2020-10-27 14:43  想活出点人样  阅读(343)  评论(0编辑  收藏  举报