- file:文件路径名
- mode:文件打开模式
- buffering:文件缓冲
- encoding:文件数据流的编码
- errors:错误编码信息
![](https://i-blog.csdnimg.cn/blog_migrate/5ea14a40c4242a1290d597e852d25a8a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1d48dcaa5f0874bf92ef0bb59e0c9766.png)
2.file_stream.writelines(lines):lines可以是字符串,也可以是序列类型(列表,元组,字典,集合),但元素必须是字符串。没有返回值。
![](https://i-blog.csdnimg.cn/blog_migrate/187f834e88ad8d809ae3c865e3ba8c1f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4eed0e9e0b1303820df77021fba686dc.png)
3.可以直接使用for循环遍历文件流对象,效果与readlines()一样,区别是readlines是一次性把内容读取到内存中,消耗很大,而for循环遍历文件流对象是逐行读入到内存
2.buffering参数:0表示关闭缓冲区,该操作只适用于二进制。1表示设置行缓冲模式,只能用于文本。大于1则表示缓冲区的大小
![](https://i-blog.csdnimg.cn/blog_migrate/38aedfc9f95bbb3231ce59064b3b0a57.png)
![](https://i-blog.csdnimg.cn/blog_migrate/12d46abbaf792d42c3b0aaf09cd87e3b.png)
对文件读写进行错误处理
4.1 彻底掌握StringIO与BytesIO
StringIO
获取一个基于内存的流对象,在内存中对字符串进行读写操作
语法:StringIO(initial_value='',newline='\n'):initial_value用来传递一个初始值,默认为空字符串。newline用来定义换行符,默认\n。通过StringIO获取的对象与open具有相同的接口,都可以使用到文件流对象的方法(seek()、read()、write()等)。此外StringIO还提供了getvalue()方法,用来读取缓冲区的全部数据
例子:
BytesIO
类似StringIO,区别是对内存中的Bytes类型进行读写。执行encode()可以将字符串转换成bytes类型,执行decode()可以将bytes转换成字符串类型
语法:BytesIO([initial_bytes]):参数表示初始化的Bytes数据
例子:
5.1 使用json模块读取json文件
什么是json文件
全称JavaScript Object Notation,用于将JavaScript对象序列化成JSON格式的字符串
json数据格式
类似Python中的字典与列表,键名必须是字符串类型,键值可以是以下的类型
json的键值数据类型可以互相嵌套
Python中的JSON模块
1.json.dumps(obj,ensure_ascii=True):将数据对象序列化成json格式,obj是数据对象,ensure_ascii是判断数据对象是否ascii编码格式。返回一个json格式的字符串
2.loads(s):将json反序列化成Python中的数据对象。s表示将json文件中的文本或者Bytes类型。