cao_xiao_qin's blog System Research

文件操作和异常捕获

2018-09-03

阅读:


一、文件操作

1、基本过程:

打开文件 — 操作 — 关闭文件 open:(路径,打开方式,encoding=编码方式) 路径:绝对路径(了解),相对路径: ./ , ../ , …/ 打开方式:r, rb,w,wb,a 注意:路径不存在的时候,读的形式打开会报错,写的形式打开会自动创建文件。 设置编码方式:utf-8 , gbk 注意:如果以二进制的方式打开文件(rb,wb),不能设置编码方式。

2、文件的读和写:

read()、readline() – 读 write() – 写

3、关闭

close() —- 良好的习惯

4、打开文件和关闭文件的简写方式(常用的)
#文件打开操作完成后,会自动关闭文件
with open() as 文件变量名:
  文件操作
  • 下载文件的本质就是从网络上下载二进制数据,再写入本地文件。 二进制文件(图片、视频等)只能用二进制方式(rb、wb)打开。

    二、json文件

    json是有特定格式的一种文本形式,它有自己的语法。(.json文件)

    1、json格式对应的数据类型及其表现。
  • 一个json文件中只能存一个数据,这个数据的类型必须是以下类型中的一个,并且只能用双引号。 对象(object)—– {“a”:10,”b”:[1,2]} 相当于Python的字典 数组(array)—– [100,”abc”,true,[1,2]] 相当于Python的列表 数字(number)—– 0,100,3.14
    字符串(string)—– “abc” True —– true/false null —– null(空值)

json模块是python中内置的,专门处理json数据的一个模块。

import json
with open('./files/json1.json','r',encoding='utf-8') as f:
  content = json1.json
  
2、python 对 json 数据的支持

A、json –> python (1)、json.load(json文件对象):以json的格式,获取文件中的内容。将内容转换成相应的python数据。 (2)、json.loads(json格式内容的字符串,编码方式):将json格式的字符串转换成python对应的数据。

json ---> python
对象 ---> 字典
数组 ---> 列表
数字 ---> 整数、浮点数
true,false ---> 布尔(True,False)
null ---> None

B、python –> json

python ---> json
字典 ---> 对象
列表、元组 ---> 数组
整数、浮点数 ---> 数字
True,False ---> true,false
字符串 ---> 字符串(双引号)
None ---> null

(1)、json.dump(写入json文件中的python数据,json对象) (2)、json.dumps(转换成json格式字符串的python数据)

3.异常捕获

程序出现某种异常,但是不想因为这个异常而让程序崩溃。这个时候就可以使用异常捕获机制。

  • 执行过程:依次执行try后面的代码块,一旦遇到异常,就马上执行except后面的代码块。执行完后再执行其他的代码。 如果try里面的代码块没有异常,就不执行except后面的代码,而执行其他的代码。

形式一(捕获所有异常)

try:
  需要捕获异常的代码块(可能会出现异常的代码块)
except:
  出现异常后执行的代码

a = [1,2,3,5]
try:
    print(a[5])
except:
    print('捕获到异常')

形式二(捕获指定类型)

try:
  需要捕获异常的代码块(可能会出现异常的代码块)
except 错误类型:
  出现异常后执行的代码

a = [1,2,3,5]
try:
    print(a[5])
except IndexError:
    print('捕获到异常')

a = [1,2,3,5]
try:
    print(a[5])
except (IndexError,KeyError):
    print('捕获到异常')

形式三(捕获到异常进行多种处理)

try:
  需要捕获的异常的代码块(可能会出现异常的代码块)
except 错误类型1:
  执行语句1
except 错误类型2:
  执行语句2
'''
还是只会捕获到一个异常
'''

形式四(finally:不管有没有异常,即使崩溃,也会执行finally里面的的东西。)

try:
  需要捕获的异常的代码块(可能会出现异常的代码块)
except 错误类型1:
  执行语句1
except 错误类型2:
  执行语句2
finally:
  执行语句   
'''
finally:不管有没有异常,都会执行finally里面的的东西。
'''
def user_input():
    try:
        numb1 = float(input('请输入除数:'))
        numb2 = float(input('请输入被除数:'))
    except ValueError:
        print('输入类型错误,请输入数字!!')
        user_input()
    test(numb1,numb2)

def test(n,y):
    try:
        print('%f / %f = %.2f' % (n,y,n/y))
    except ZeroDivisionError:
        print('被除数不能为0')
        user_input()
    finally:
        print('哈哈哈哈哈哈')
user_input()
4、抛出异常(以后补充)

raise 异常类型


下一篇 pygame