文件操作
-
open() -- 打开
-
open通过Python控制操作系统打开文件
-
f=open('文件路径',mode='r',encoding='utf-8')
-
mode -- 不写就默认是r
-
-
f -- 文件句柄
-
-
file -- 文件位置
-
encoding -- 文件编码
r
-
print(f.read()) -- 全部读取
-
文件只能读取一次
-
print(f.read(3)) -- 按照字符读取(读不到最后一位)
-
f.readline() -- 读取一行,默认尾部有一个\n
-
f.readlines() -- 一行一行读取,全部储存在列表中
-
-
路径转义:
-
都改成
"\\"
-
在路径开头加r
-
-
路径:
-
绝对路径:从磁盘(C盘)开始查找
-
相对路径:相对于某个文件进行查找
-
rb
-
f=open('文件路径',mode='rb')
-
字节操作时,不能指定encoding编码
-
f.read()
-
f.read(3) -- 按照字节读取
-
f.readline()
-
f.readlines()
-
-
r 和rb的区别:
-
r需要指定encoding,rb不需要
-
r中的read(3)按照字符读取,rb模式中按照字节读取
-
-
read 和 readlines 如果文件较大时,会出现内存溢出
-
解决方案:文件较大时使用for循环
-
f=open('文件路径',mode='r',encoding='utf-8')
for i in f:
print(i.strip()) #面试题
-
-
w
-
ff=open('a1',mode='w',encoding='utf-8')
ff.write('123') #写的内容必须是字符串-
有文件就用当前文件,没有文件就创建一个文件
-
写的内容必须是字符串
-
-
w操作:-- 清空写(写的是文本)
-
先清空文件(打开文件时清空)
-
写入内容
-
wb
-
清空写(写字节)
-
ff=open('a1',mode='w')
a
-
追加写
-
有文件就用用当前文件,没有就创建一个文件
ab
-
追加写字节
读写+操作
r+ 读写
-
f=open('b1',mode='r+',encoding='utf-8')
-
f=open('b1',mode='r+',encoding='utf-8') f.write('今天是周一') print(f.read()) #坑,只能先读后写
w+ 写读
-
f.seek() -- 移动光标
-
f=open('b1',mode='r+',encoding='utf-8') f.write('今天是周一') f.seek(0) print(f.read())
-
a+ 追加写、读
-
坑:永远在末尾加,移动光标写内容还是在末尾追加
-
f=open('b1',mode='r+',encoding='utf-8') f.write('今天是周一') f.seek(0) f.write('啊啊啊啊') print(f.read())
-
其他操作
-
f.seek() -- 移动光标(光标是按照字节移动)
-
seek(0,0) -- 移动光标到文件头部
-
seek(0,1) -- 移动光标到当前位置
-
seek(0,2) -- 移动光标到文件末尾
-
-
f.tell() -- 查看光标(按照字节计算)
-
修改文件:
-
import os #操作系统交互接口
-
-
考点:
-
创建一个新的文件
-
读取旧的文件内容
-
进行替换修改
-
将修改的内容写入到新的文件中
-
将文件关闭
-
将文件名进行修改
-
将文件中全部内容读取容易导致内存溢出
-
-
with open('a1','r',encoding='utf-8')as f:
-
自动关闭文件
-
同时操作多个文件
-
with open('a1','r',encoding='utf-8')as f,open('a2','r',encoding='utf-8')as f1:
#上下文管理
-
-
文件操作目的
-
持久化:永久存储