python 异常捕捉

一、文件操作

1.什么是模块?---->一个.py文件就是一个模块
2.import:可以通过import关键字导入其他模块
3.怎么使用模块中的内容?什么内容可以使用?
import 模块名-------->导入模块中的整个内容
以  模块名.的方式去使用模块中的内容
import other:
导入一个模块,这个模块名字叫other,在执行import other的时候,other里面所包括的内容都会被执行一遍,相当于复制other2里面的内容粘贴到这里

4.from 模块 import 内容1,内容2....
直接从模块中导入需要使用的内容,该方法的好处是在使用内容的时候不需要再加模块名
5.阻止被导入的模块中的不必要的代码被粘贴到当前模块,一般情况下除了函数和类的声明以外,其他的代码都放到if里面,格式如下:
if _ name _= _ main :------写在这个里面的代码在被其他文件的导入时候不会被执行
原因如下:因为每一个文件都有一个名字属性,这个属性只有在该文件被直接运行的时候才会被系统强制转换成
main _,如果文件不是被直接执行的话,if条件不会成立,那么下面的代码就不会被执行,就是这样,哦耶!
6.使用as重命名
import 模块名 as 新的名字
from 模块名 import 函数名 as 新的函数名

**总结:1、import   模块名
   模块名.内容
2、from   模块名   import   内容
3、import   模块名   as   自己想取的名字
4、from   模块名   import   内容   as   自己想取的名字

二、文件基本操作

(所有)文件操作流程:打开文件--->操作文件(读/写)--->关闭文件

1、打开文件:open(文件路径,打开的方式,编码方式)

文件路径(必填)---->决定打开哪个文件
文件方法(默认值是'r')---->决定打开文件后是进行什么操作(默认是打开读)
'r'(read)----读操作(读出来的字符串)
'rb'/'br'---读操作(读出来的数据是二进制)
'w'(write)---写操作(可以将文本数据写入文件中)
'wb'/'bw'----写操作(可以将二进制数据写入文件中)
r----read w----write b----byte
rb/br-----读二进制
wb/bw-----写二进制
'a'-----追加

2、文本文件读操作

1、打开文件(要用变量保存)(r,br/rb)----加上b是读取二进制代码
a.放在工程外面的文件,写绝对路径:
b.将文件放到工程目录下的某个位置,写相对路径(相对于工程目录):./相对路径 或者 ../相对路径
当你的py文件直接放在工程目录下,想要使用open打开工程中的其他文件使用'./'
当py文件在工程目录的子目录下面,想要使用open打开工程中的其他文件使用'../'
当读取二进制码的时候,不能加encoding='utf-8'

f = open('./test1.txt','rb')
content = f.read()
print(content)
结果:b'\xe5\x8f\xa4\xe4\xba\xba\xe4\xbd\x95\xe6\x97\xb6\xe5\x88\x9d\xe8\xa7\x81\xe6\x9c\x88\xef\xbc\x8c\xe6\xb1\x9f\xe6\x9c\x88\xe4\xbd\x95\xe5\xb9\xb4\xe5\x88\x9d\xe7\x85\xa7\xe4\xba\xba'

2、读取文件
文件.read()------->读出来的内容也要保存
**注意:文件.read(n)------用n可以设置读取的长度,在第二次读取的时候,从上一次结束的位置开始

f = open('./test1.txt','r',encoding='utf-8')
content = f.read(2)
print(content)
content1 = f.read()
print(content1)
f.close()
结果:古人
何时初见月,江月何年初照人

3、关闭文件
文件.close()

3、文本文件写操作

注意:以读的方式打开文件,如果这个文件不存在,会报错 File Not Find Error
以写的方式打开文件,如果这个文件不存在,就会创建这个文件

1.打开文件(w,bw/wb)-----加上b是写入二进制代码
2.写操作
'w': 在写的时候会清空文件中原来的内容,然后再往里面写数据
'a':在原文件内容的基础上增加新的内容
3.关闭文件

4、二进制文件的读写操作(在读或者写的时候,必须加b)

音频、视频、图片文件,都是二进制文件

二进制文件的读操作
f = open('./美女.jpg','rb')
image_data = f.read()
print(image_data)
f.close()
结果:结果太长了

二进制文件的写操作

f = open('./美女.jpg','wb')
f.write()
f.close()

5.通过with关键字去打开文件

with open()as 文件变量名:
文件操作

在文件操作结束后会自动关闭文件

with open ('./test1.txt','r',encoding='utf-8') as ff:
    content = ff.read()
    print(content)
结果:可怜金玉质,终陷淖泥中
with open ('./美女.jpg','rb') as ff:
    content = ff.read()
    print(content)

三、json文件(最外层只能是字典或者列表或者字符串)

json文件(文本),就是文件后缀是.json的文件。内容必须是json格式
json格式:
1.内容是字符串(指的是json本身的内容是字符串)
2.最外层是字典,字典里面就必须是键值对
3.最外层是数组(列表),数组里面的内容必须是数组数据
json数据类型(对应python的数据类型):object --->dict array--->list
string ---->str number----->int/float true/false---->True/False
null ----->None
json文件字符串用双引号
json是python中内置的一个模块,专门用来处理json数据的
在使用json之前,首先要导入json
import json

1.json文件的读操作

import json
with open('.//.idea/test.json','r',encoding='utf-8') as f:
    content = json.load(f)
    print(content,type(content))

with open('.//.idea/test.json','r',encoding='utf-8') as f:
    content = f.read()
    print(content,type(content))
结果:[{'name': 'A', 'age': 18}, {'name': 'a', 'age': 20}] <class 'list'>
[{"name": "A", "age": 18}, {"name": "a", "age": 20}] <class 'str'>

注意:json.load(文件对象):获取指定json文件中的内容,返回值的类型是json文件中最外层的数据类型
直接使用read()去读,获取到的是字符串,包含json文件中所有的内容(包括注释部分)

2.json文件的写操作(json.dump(写的内容,文件对象)

import json
with open('.//.idea/test.json','w',encoding='utf-8') as f:
    w_content = [{'name': 'A', 'age': 18}, {'name': 'a', 'age': 20}]
    json.dump(w_content,f)

3.json模块的其他操作(json.loads(json格式的字符串,编码方式)

loads(字符串,编码方式)----->将指定的字符串(json格式的字符串),转换成python数据
将字符串转换成字典\将字符转化成列表

content = json.loads('["a",100,false,{"a":1,"abc":"100"}]',encoding='utf-8')
    print(content,type(content))
结果:['a', 100, False, {'a': 1, 'abc': '100'}] <class 'list'>

dumps(对象)
将对象转换成json字符串
字典/列表转换成json字符串

content = json.dumps(['aaa',1,True])
    print(content,type(content))
结果:["aaa", 1, true] <class 'str'>

出现异常(错误)不想让程序崩溃,就可以进行异常捕获
try:
需要捕获异常的代码
except:
出现异常会出现的代码

try:
需要捕获异常的代码
except 错误类型:
捕获到指定的错误类型,才执行的代码



作者:堪怜咏絮才
链接:https://www.jianshu.com/p/2e7eea15bff5
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值