文件操作的基本模式:
1.只读模式(r,rb)
2.只写模式(w,wb)
3.追加模式(a,ab)
4.r+读写模式
5.w+写读模式
6.a+写读(追加写读)
7.其他文件操作
8.文件的修改以及另一种打开文件句柄的方式
只读模式(r,rb)
需要注意encoding表示编码集. 根据文件的实际保存编码进行获取数据, 对于我们而言. 更多的是utf-8.
rb. 读取出来的数据是bytes类型, 在rb模式下. 不能选择encoding字符集.
rb的作用: 在读取非文本文件的狮虎,比如读取MP3,图像,视频等信息的时候就需要用到rb,因为这种数据是没有办法直接显示的
绝对路径和相对路径:
1.绝对路径: 从磁盘根目录开始一直到文件名
2.相对路径: 同一个文件夹下的文件,相对于当前这个程序所在的文件夹而言,如果在同一个问价夹中,则相对路径就是这个文件名,如果在上一层文件夹,则要 ../
我们更推荐使用相对路径,因为我们把程序拷贝给别人使用的时候,直接把项目拷走就能运行,如果使用绝对路径,那还需要拷贝外部的文件
只写模式(w,wb)
写入的时候注意,如果没有文件,则会创建文件,如果文件存在,则将原件中原来的内容删除,再写入新内容
需要注意的是:只写模式下不能执行任何读的操作
wb模式下. 可以不指定打开文件的编码. 但是在写文件的时候必须将字符串转化成utf-8的
bytes数据
追加模式(a,ab)
在追加模式下,我们写入的内容会追加在文件的结尾
r+读写模式
对于读写模式,必须是先读,因为默认光标是在开头的,准备读取的,当读完之后再进行写入,我们以后使用频率最高的模式就是r+
r+ 模式下,必须是先读取,然后再写入
其他相关操作
seek(n)光标移动到n的位置,注意,移动的单位是byte,所以如果是utf-8的中文部分要是3的倍数
通常我们使用seek都是移动到开头或者结尾
移动到开头:seek(0)
移动到结尾: seek(0,2)
seek的第二个参数表示的是从那个位置进行品一,默认是0,表示开头,1表示当前位置,2表示结尾
tell()
使用tell()可以帮我们获取到当前光标在什么位置
用法: f.tell()
truncate()
截断文件
用法: f.truncate()
修改文件以及另一种打开文件的方式
文件修改:只能将文件中的内容读取到内存中,将信息修改完毕,然后将源文件删除,将新文件的名字改成老文件的名字