文件操作
句柄
句柄 = open(“文件”,mode = "模式",encoding = "编码集")
注意点:读完的文件句柄一定要关闭
with open("文件",mode = “模式”,encoding = “编码集”) as "句柄":
f = open("t1",mode="r",encoding="utf-08")
f.close #关闭文件
文件名为“t1”,相对位置,模式为“r”只读模式,编码集“utf-8”.
with open("C:\Users\Administrator\Desktop\t1",mode="w",encoding="utf-8") as f:
文件名为“C:\Users\Administrator\Desktop\t1”,绝对位置,模式为覆盖写(mode=)可省略,utf-8 编码
路径
1.绝对路径:从磁盘根目录开始一直到文件名
2.相对路径:相对于当前这个程序所在的文件而言:如果在同一个文件中,则相对路劲就是这个文件名;如果在上一层文件夹则要使用../
推荐使用相对路劲,因为移动程序的整个文件到其他电脑的时候,使用绝对路径还需要额外的拷贝外部文件
模式
只读'r'和“rb”
rb读出来的数据是bytes类型,在rb模式下,不能encoding字符集
read
只读模式下只能读取文件,不可写入内容和更改。"rb"为读取字节,根据encoding判定长短
read为一次读取文本中的全部内容,当文件过大时容易造成内存溢出
f = open("t1",mode="r",encoding="utf-8") #t1 中内容为123132 print(f.read()) #123132
read(a)指定读取到什么位置,我们指定先读取前三个内容,然后在使用read()进行读取会继续向后读取,而不会从头开始读取
readline()
readline()读取每次只读取一行,注意点:readline()读取出来的数据在后面都有一个\n,可用str.strip()去除。
readine()读取一行后,从下一行继续读取
f = open(r"t1",mode="r",encoding="utf-8") print(f.readline()) print(f.readline()) print(f.readline()) # 123 # # 456 # # 789
readlines
readlines()读取的是每一行,存放到一个列表当中
f = open(r"t1",mode="r",encoding="utf-8") print(f.readlines()) #['123\n', '456\n', '789\n']
覆盖写‘w’,'wb'
# # 写完文件刷新.flush() # #
只写模式会创建不存在的文件,文件存在时会清空内容
wb模式下,不可以指定打开文件的编辑,但是写文件的时候必须将字符串转换成utf-8的bytes数据
追加a,ab
只要是a或者ab,a+都是在文件的末尾写入,不论光标在任何位置.
读写模式r+,r+b
对于读写模式,必须是先读后写,因为光标默认在开头位置,当读完了以后再进行写入.使用频率最高的模式就是r+
r+模式是先读后写
***在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入或者操作文件的时候都是在结尾进行的操作.***
写读模式w+,w+b
先将所有的内容清空,然后写入.最后读取.但是读取的内容是空的,不常用
追加模式a+,a+b
a+模式下,不论是先读还是后读,都是读不到数据的
其他操作
seek(a)
光标移动到a 的位置,根据字节(byte)判断,所有如果是utf-8的中文部分要是3的倍数通常我们使用seek都是移动到开头或者结尾
seek(0,0)光标移动到开头
seek(0,1)光标移动到当前位置
seek(0,2)光标移动到末尾
tell()
使用tell()获取当前光标在什么位置
truncate() 截断文件
先挪动光标到你想要截断的位置. 然后再进行截断。
关于truncate(n), 如果给出了n. 则从开头进行截断, 如果不给n, 则从当前位置截断. 后⾯面
的内容将会被删除
import os
os.rename(a,b)重命名,将a文件命名为b。a,b均为字符串
os.remove(a)删除,将文件a删除
浙公网安备 33010602011771号