第十章 掌握Python的文件处理

1.1 彻底掌握计算机文件的基础知识
计算机文件的命名
windows中的文件命名规则:文件名.扩展名,不区分大小写,不可使用特殊符号如/、\、?、*等

 

计算机文件的路径
绝对路径:从盘符(C:、D:)开始的路径。 盘符\目录名\文件名 。例如C:\Python\helloword.py

 

2.1 彻底掌握文件读写的基础操作
Python中的open函数
通过内置函数open来对文件进行读写操作。open会打开一个文件,返回一个stream(文件流对象)
open的参数有很多,只需掌握参数列表的前五个形参open(file,mode,buffering,encoding,errors,...)
  • file:文件路径名
  • mode:文件打开模式
  • buffering:文件缓冲
  • encoding:文件数据流的编码
  • errors:错误编码信息

 

文件的打开模式
读写混合模式:
1.r+ :表示r模式与a模式的混合,使用r+模式时,文件必须存在,每次执行写操作时,都是在文件尾部进行写入。
2.w+:表示w模式与r模式的混合,如果文件已存在,则清空内容,文件不存在时则创建文件。
3.a+:表示a模式与读模式的混合,如果文件存在则在文件尾部进行写入,不存在则创建文件。

 

对文件进行写操作
通过文件流对象(stream)的write方法来对文件进行写操作。使用的是w模式
1.file_stream.write(text):text必须为字符串类型,返回值为写入的字符数,\n表示换行

2.file_stream.writelines(lines):lines可以是字符串,也可以是序列类型(列表,元组,字典,集合),但元素必须是字符串。没有返回值。

 

 

对文件进行读操作
对文件进行写操作后,可以使用read方法来读取文件中的内容。使用r模式
1.file_stream.read(count):count表示读取文件中的多少个字符,可以不传值,不传值则读取全部。放回一个字符值
2.file_stream.readlines():读取所有行,返回一个列表类型

3.可以直接使用for循环遍历文件流对象,效果与readlines()一样,区别是readlines是一次性把内容读取到内存中,消耗很大,而for循环遍历文件流对象是逐行读入到内存

 

 

3.1 彻底掌握文件读写的高级操作
文件的读写缓冲区
文件的读写缓冲区对应的是内存中的一块缓冲区,在文件进行写操作时,会将数据先写到这个区域,缓冲区写满后再刷新到磁盘。在进行读操作时,会将文件中的一部分数据预读到这块内存缓冲区,然后再从这块区域中读取数据

 

为什么需要这块缓冲区
因为在内存中读写数据的速度是远快于在磁盘中的。
1.文件流对象的flush方法:手动刷新内存缓冲区,在文件中,有时读取不到刚写入的数据,可能是数据写到缓冲区中,还没刷新到磁盘,此时就需要flush方法来手动刷新到磁盘

 

2.buffering参数:0表示关闭缓冲区,该操作只适用于二进制。1表示设置行缓冲模式,只能用于文本。大于1则表示缓冲区的大小 

 

无需刷新,直接写入磁盘

 

文件的指针和定位
可以理解为SQL Server中的游标,指针就是读取文本的位置,每次读取一行后,指针将会指向下一行。
1.file_stream.seek(offset,[from]):设置指针的位置,offset表示偏移量,from表示开始位置,默认0。0表示从文件头,1表示当前位置,2表示从尾部。如果设置为1,则必须以二进制的模式来读取文本

 

指定文件编码
通过设置open中的encoding参数来指定读写的编码

对文件读写进行错误处理

 

 

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类型。

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值