前言
迟到的青年节快乐,哈哈哈,这下收假了,逍遥结束,学习继续,今天分享分享python在文件操作方面的一些知识点
文件操作
-
操作文件分为三步
- 打开文件
- 操作文件
- 关闭文件
-
example:
f = open(“文件的路径(文件放的位置)”, mode=“操作文件的模式”, encoding=“文件的编码”) #内置函数
f文件句柄
f = open("你好", mode="r", encoding="utf-8") print(f.read()) f.close()
-
文件操作的模式
- r,w,a(重要)
- rb,wb,ab(次要)
- rt,wt,at
r操作
f = open("你好", mode="r", encoding="utf-8")
print(f.read()) #全部读取
print(f.read(3)) #按照字符进行读取
print(f.readline()) #读取一行的内容\n(自动换行)
print(f.readline()) #文件读过以后会接着上次读取的位置继续读取
print(f.readlines()) #一行一行的读取,存放在列表中
#解决大文件
for i in f:
print(i)
#本质就是一行一行进行读取,带换行符
w操作
- w分为两步:
1、先清空文件
2、写入文件
f = open("你好", mode="w", encoding="utf-8")
f.write("123456\n")
f.write("79749\n") #按行写入,需换行符
- 路径
- 1、绝对路径 – C:\Users\ASUS\PycharmProjects\pythonProject1\08day\你好
- 2、相对路径 --即相对此层#推荐使用相对路径(兼容性高)
- 路径转义
- “\\”
- r"C:\user\net" --repr 显示数据的原生态
a操作
追加写 在源文件的基础上进行添加
f = open("你好", mode="a", encoding="utf-8")
f.write("464")
rb操作
f1 = open("1.jpg", mode="rb")
print(f1.read()) #全部读取
print(f1.read(3)) #按照字节读取
wb操作
f = open("3.jpg", mode="wb")
f.write(f1.read())
ab操作
f = open("3.jpg", "ab")
f.write("你好啊".encode("utf-8"))
其实这三个操作与w,r,a操作类似,基于字节之上
+操作
r+:读写 先读后写
'''
错误的操作:
f = open("你好", mode="r+",encoding="utf-8")
f.write("daafaf")
print(f.read())
'''
f = open("你好", mode="r+", encoding="utf-8")
print(f.read())
f.write("daafaf") 先读后写
w+: 清空写,读
f = open("你好", mode="w+", encoding="utf-8")
f.write("fawf")
print(f.read())
a+ 追加写,读
f= open("你好", mode="a+", encoding="utf-8")
f.write("faew")
print(f.tell()) #字节数
f.seek(0) #0 将光标移到到文件的头部
print(f.read())
其他操作
-
tell 查看光标 返回的是字节数
-
seek 移动光标
-
seek(0,0) --移动到文件的头部 seek(0,1) --当前位置 seek(0,2) --移动到文件的末尾 seek(3) --一个参数,按照字节进行移动 当使用seek时,取值要注意编码集 eg: f = open("你好",mode="r",encodeing="gbk" 若文件中存储全为汉字 f.seek(3) 报错 f.seek(4) 正常运行 因为汉字在gbk编码中字节为2
-
文件修改 with关键字
-
with open("你好啊", "r", encoding="utf-8")as f: 文件的具体操作
-
当我们想将文件的ok全部变为ko时
-
不使用with关键字
-
f = open("你好啊", "r", encoding="utf-8") s = f.read() s1 = s.replace("ok", "ko") f1 = open("你好啊", "w", encoding="utf-8") f1.write(s1)
-
使用with关键字
-
w,a 检测有文件就操作,没文件就创建 with open("你好啊", "r", encoding="utf-8")as f, open("你好啊.txt", "w", encoding="utf-8")as f1: s = f.read() s1 = s.replace("ok", "ko") f1.write(s1) ''' 当文件大时 for i in f: s1 = i.replace("ok","ko") f.write(s1) ''' import os os.rename("你好啊", "你好啊.bak") os.rename("你好啊.txt", "你好啊")
-
-
with关键字比起常规操作,备份文件,自动关闭文件,减少了一些文件多开,合并等的问题
-
自动关闭,文件操作要在缩进中进行