文件操作
文件操作
文件操作
1.初识文件操作
2.只读(r,rb)
3.只写(w,wb)
4.追加(a,ab)
5.r+读写
6.w+写读
7.a+写读(追加写读)
8.其他写作方式
9.文件的修改以及另一种打开文件句柄的方式
主要内容:
1.我们可以通过使用open()函数的方式打开文件的句柄
打开文件的方式:r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+b,默认使用r(只读模式)
2.只读(r和rb)操作
# r模式 f = open('H:/123.txt', mode='r',encoding='UTF-8') # 打开123文件,用只读的方式,编码格式是UTF-8 centent = f.read() # 读取文件 print(centent) # 输出内容 f.close() # 关闭文件 # rb模式 f = open('H:/123.txt', mode='rb' ) # 打开123文件,用只读字节的方式 centent = f.read() # 读取文件,会读取出来字节模式的 print(centent) # 输出内容.输出字节形式的 f.close() # 关闭文件
绝对路径和相对路径:
绝对路径:从根目录下一直到你那个文件的位置
相对路径:根据你当前所在位置的路径
../ 返回上一层
读取文件的方式:
read():将文件中的全部内容全部读取出来,弊端:占内存,如果文件太大会崩溃
read(n):读取几个字符,在rb模式下才是读取几个字节
readline():一次读取一行,每次读取的数据后面都有一个\n,需要去除
readlines():会将每一行形成一个元素,放到一个列表里
最好使用for循环的方式打开
读取完一定要f.close(),来关闭句柄
写读文件的方式(w,wb):
写的时候要注意,如果没有文件,则会创建文件,如果文件存在,则会删除文件内容,再写入新的内容
write():写入内容,在写入内容的模式下,是无法读取的
flush():刷新文件
wb模式下,可以不指定打开文件的编码,但是在写入的时候必须将字符串,转换为UTF-8的bytes数据
encode(编码):字符通过编码成为自节
decode(编码):字节通过解码成为字符
追加(a,ab)
在追加模式下. 我们写入的内容会追加在文件的结尾
读写模式(r+, r+b)
对于读写模式. 必须是先读. 因为默认光标是在开头的.准备读取的. 当读完了之后再进行写入. 我们以后使用频率最多的模式就是r+
需要先读在写
写读(w+, w+b)
先将所有的内容清空. 然后写入. 最后读取. 但是读取的内容是空的, 不常用
追加读(a+)
a+模式下, 不论先读还是后读. 都是读取不到数据的.
其他操作:
seek(n):seek(n) 光标移动到n位置, 注意, 移动的单位是byte. 所以如果是UTF-8的中文部分要是3的倍数. 通常我们使用seek都是移动到开头或者结尾. 移动到开头: seek(0) 移动到结尾: seek(0,2) seek的第二个参数表示的是从哪个位置进行偏移, 默认是0, 表示开头, 1表示当前位置, 2表示结尾
tell():使用tell()可以帮助我们获取当前光标位置
truncate() 截断文件
在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入 或者操作文件的时候都是在结尾进行的操作. 所以如果想做截断操作. 记住了. 要先挪动光标. 挪动到你想要截断的位置. 然后再进行截断 关于truncate(n), 如果给出了n. 则从开头开头进行截断, 如果不给n, 则从当前位置截断. 后面的内容将会被删除
另一种打开文件的方式:
with open("娃娃", mode="r", encoding="utf-8") as f1:
这个不需要关闭文件,使用方式和上面一样