针对磁盘中的文件的读写。文件I/O I 输入(input) O输出(Output)
**文件操作步骤:**1.打开文件 2.读写文件 3.关闭文件
(把大象装进冰箱)
open()
==> 打开冰箱write()
==> 把大象装进冰箱close()
==> 关闭冰箱门(把大象从冰箱中取出)
open()
==> 打开冰箱门read()
==> 把大象拿出来close()
==> 关闭冰箱门格式: open(文件的路径,打开的方式,[字符集])
参数 encoding: 可选参数,设置文件的字符集
如果是一个二进制的文件时,不需要设置字符集
encoding='utf-8'
举例①:
# 1.打开文件
# 打开文件,创建了一个文件对象
fp = open('./1.txt','w',encoding='utf-8')
print(fp,type(fp))
# 2.写入内容
# 使用文件对象,调用 write() 方法 写入内容
fp.write('hello world')
# 3.关闭文件
# 使用文件对象,调用close() 方法 关闭文件
fp.close()
举例②:
# 1. 打开文件
# 打开文件,创建了一个文件对象
fp = open('./1.txt','x',encoding='utf-8')
# 如果使用r模式打开一个不存在的文件,则会引发错误
#FileNotFoundError: [Errno 2] No such file or directory: './2.txt'
# 如果使用x模型打开一个已经存在的文件,则会报错
# FileExistsError: [Errno 17] File exists: './1.txt'
# 2. 读取文件内容
# 使用文件对象 调用 read() 方法
res = fp.read()
print(res)
# 3. 关闭文件
# 使用文件对象,调用close() 方法 关闭文件
fp.close()
举例③:
# 写入文件操作
# 1。打开文件
fp = open('./1.txt','a',encoding='utf-8')
# 2。写入 文件
fp.write('\n你好')
# 3。关闭文件
fp.close()
# 读取操作
# 1。打开文件
fp = open('./1.txt','r',encoding='utf-8')
# 2。读取文件
res = fp.read()
# 3。关闭文件
fp.close()
print(res)
fp.seek(0) # 把文件指针设置到文件的开头位置 fp.seek(10) # 设置文件指针的位置 fp.seek(0,2) # 0,2是把文件指定设置在文件的末尾
seek() 设置文件指针位置
with open('./test/4.txt', 'r+', encoding='utf-8') as fp:
# a+模式,指针默认在文件的最后,所以直接读是读取不到内容的
# fp.seek(0) # 把文件指针设置到文件的开头位置
fp.seek(10) # 设置文件指针的位置
fp.seek(0,2) # 0,2是把文件指定设置在文件的末尾
# fp.write('\n00000')
res = fp.read()
格式:文件对象.write(字符串)
int类型无法写入
格式:文件对象.write(容器类型数据)
注意:容器类型数据中的元素也必须是可写入的字符串类型
格式:文件对象.read()
从当前指针位置读取到最后
格式:文件对象.read(读取的字节数)
可以读取指定长度的字符
格式: 文件对象.readline()
一次读取一行
格式: 文件对象.readline(字节数)
一次读取一行中指定长度的字节
格式: 文件对象.readlines()
读取所有行,每一行作为一个元素,返回了一个列表
格式:文件对象.readlines(n)
按照行进行读取,可以设置读取的字节数,设置的字节数不足一行按一行算
读取相关函数
with open('./test/4.txt','r',encoding='utf-8') as fp:
fp.seek(3) # 设置指针的位置
res = fp.read() # 默认从当前指针开始读取到最后
res = fp.read(3) # 设置读取的字节长度
res = fp.readline() # 一次只读取一行内容
print(res)
res = fp.readline(3) # 可以读取当前行中的指定字节数
res = fp.readlines() # 一次读取多行数据,每一行作为一个元素,返回一个列表
res = fp.readlines(6) # 按照行进行读取,可以设置读取的字节数,设置的字节数不足一行按一行算
print(res)
格式:文件对象.close()
关闭打开的文件
with open('./test/4.txt','r+',encoding='utf-8') as fp:
res = fp.truncate(5)
# 默认从文件的首行的首个字符开始进行截断,截断的长度为size个字节数,
# size如果为0,则从当前位置截断到最后
with open(文件路径,打开模式) as 变量:
变量.操作()
#不需要写关闭
with open('./1.txt','r+',encoding='utf-8') as fp:
res = fp.read()
print(res)
with open('./1.txt','r+',encoding='utf-8') as fp:
# 设置指针的位置
fp.seek(20) # 设置当前指针的位置
fp.write('cc')
fp.seek(0) # 设置当前指针的位置 seek(0),最开始的位置
res = fp.read()
print(res)
w+ 即可读又可写(注意w模式的特点,是打开文件后直接清空了文件)
r+ 即可读又可写
a+ 追加写,并且可读
x+ 异或
文件路径 路径 url 统一资源定位符
相对路径: 就像给别人指路一样: 在某某大厦的对面
针对文件的相对路径的表示,从当前目录开始计算
❂ 1.txt ==> 具体文件前没有任何表示时,默认为当前目录 和 ./1.txt 是一个位置
❂ ./1.txt ==> ./ 代表当前目录中的 1.txt
❂ …/1.txt ==> …/ 代表当前目录中的 上一级目录中的1.txt
绝对路径: 就像买东西写收货地址一样: 北京市海淀区中关村大街128号xxx小区,xxx号楼xx单元xx室
windows: c:/users/appdata/1.txt
Linux: /user/home/yc/1.txt
w w模式 write 写入模式
(1) 文件如果不存在,则创建这个文件
(2) 文件如果存在,则打开这个文件,并且清空文件内容
(3) 文件打开后,文件的指针在文件的最前面
r r模式: read 读取模式
(1) 如果文件不存在,则报错
(2) 文件如果存在,则打开文件
(3) 文件指针在文件的最前面
x x模式: xor 异或模式
(1)文件不存在,则创建这个文件
(2)文件已存在,则报错(防止覆盖)
(3)文件的指针在文件的最前面
a a模式: append 追加模式
(1)文件不存在,则创建文件
(2)文件如果存在,则打开文件 (和w模式的区别在于。a模式打开文件后不会清空)
(3)文件指针在当前文件的最后
b b模式 bytes 二进制
+ +模式 plus 增强模式(可读可写)
w,r,a,x
wb,rb,ab,xb,
w+,r+,a+,x+
wb+,rb+,ab+,xb+