文章目录
文件操作模式
只读
# "r"(read):以只读模式打开文件。你只能读取文件的内容,不能修改或写入文件。如果文件不存在,会引发错误。
# 文件的指针会放在文件的开头
file = open("example.txt", "r")
读写
开头
# r+ 用于文件的读写,文件的指针放在开头
file = open("example.txt", "r+")
# w+ 打开一个文件用于读写,指针放在开头 ,存在的话,写入的字符会覆盖源文件,不存在则会创建文件
结尾
# a+ 用于读写,存在则打开,不存在则创建,指针放在结尾
只写
开头
清空
# "w"(write):以写入模式打开文件。如果文件存在,它会被截断(清空),然后重新写入内容。如果文件不存在,将会创建一个新文件。
file = open("example.txt", "w")
结尾
# "a"(append):以追加模式打开文件。如果文件存在,你可以在文件末尾追加内容。如果文件不存在,将会创建一个新文件。
file = open("example.txt", "a")
# "x"(exclusive creation):以独占创建模式打开文件。如果文件已存在,会引发错误。如果文件不存在,将会创建一个新文件。
file = open("example.txt", "x")
# "b"(binary):与上述模式结合使用,表示以二进制模式打开文件,用于处理二进制文件(如图片、音频等)。例如,"rb"表示以只读的二进制模式打开文件。
file = open("example.bin", "rb")
# "t"(text):与上述模式结合使用,表示以文本模式打开文件,用于处理文本文件(默认)。例如,"rt"表示以只读的文本模式打开文件,这是默认的模式。
file = open("example.txt", "rt")
# 这些模式可以组合使用,例如:"rb" 表示以只读的二进制模式打开文件。在打开文件后,你可以使用不同的方法(如read()、write()等)来执行相应的文件操作。不要忘记在完成文件操作后关闭文件,以释放系统资源:
file.close()
文件打开方式
open
格式:open(file_name(文件路径), mode(读写模式), encoding=‘编码格式’)
路径:相对\绝对
需要手动关闭文件
file = open('python.txt', 'r', encoding = "utf、
")
print(file) # <_io.TextIOWrapper name='python.txt' mode='r' encoding='UTF-8'> 在windows中默认读写格式是gbk
print(type(file)) # <class '_io.TextIOWrapper'>
# 将读取出来的内容进行打印
print(file.read())
# 关闭文件
file.close()
在调用文件的 时候,只要打开了不关闭,就会一直浪费内存,不利于服务器的优化 (内存泄漏)
在文件关闭 后,文件并没有被变量释放,虽然文件的 链接关闭了,但是文件的所有数据都被变量接收了
能读,但是无法操作
with
调用过后自动关闭文件
with open("liang.txt", "a+") as F:
print(f"文件已经打开")
文件的读取
read
格式:file.read(接受的字符数量)
当指定的数字不指定或者是负数的时候,文件将被读取至末尾
在读取文件时,每一次读取都会持续向后读取,知道文件关闭,所以可以用 循环持续读取
while True:
content = file.read(3)
if content == '':
break
print(content)
file = open('python.txt', 'r')
# 读取文件
# n:在read中传入数值,代表我们读取的最大字符数
# 如果开发中有一个文本文件,比如网络小说,4个G大小,一次性读取,用户依次读取这么大的文件,极度消耗性能,而且 等待时间过长
# 所以在开发中我们经常会给读取数据的值做一个限定,最大读取字符一般限定为(1024*1024)
# 那我们使用read只能依次读取3个字符,那省下的字符我们怎样读取呢?
# 文件每一次读取,都会持续向后读取,直到文件关闭或程序结束,所以可以使用循环进行读取
# 在所有的文件内容读取完成后,会持续返回空字符串("")
while True:
content = file.read(3)
if content == '':
break
print(content)
# 关闭文件
file.close()
readline
格式:file.readline()不传入数据,每次读取一行(以 \n结尾的)
while True:
content = file.readline()
if content == '':
break
print(content,end='')
file = open('python.txt', 'r')
# 文件操作
# readline 使用这种方式读取文件,每次读取一行以\n为分隔符,并且在文件打开状态下,会持续向下读取,直到所有文件被读取完成后,会读取空字符串""
while True:
content = file.readline()
if content == '':
break
print(content, end='')
content = file.readlines()
print(content)
# 文件关闭
file.close()
readlines
格式:f1=f.readlines()
读取剩余或者所有的行,当作一个字符串列表返回
f=open('song.txt','r')
f1=f.readlines()
print(f1)
文件的写入
文件的写入模式如果不是追加的话,每次打开,就会清空 文件的内容
write
格式:file.write(‘’)
file.write('我爱北京天安门,天安门上太阳升')
writelines
格式:file.writelines(‘列表’)
写入容器类型中的文件,里面的格式会被保存
lines = ['吴丝蜀桐张高秋\n', '空山凝云颓不流\n', '举头望明月\n', '低头思故乡\n']
file.writelines(lines)
文件的指针偏移操作
f.tell()获取当前指针在文件之中的位置
开头
seek(0,0) 或者 seek(0)
当前
seek(x,1) # 表示从当前,向后移动,如果x为负数,则向前移动
结尾
seek(x,2) # 表示从文件末尾,向后移动,如果x为负数,则是向前移动
案例:
文件备份案例:
# 1.获取用户键入的文件名
file_name = input('请输入您要备份的文件名称:')
file = open(file_name, 'r', encoding='utf-8')
# 2.要通过文件读写操作进行备份
# 2.1.拼接备份后的文件的文件名
copy_file_name = file_name.replace('.', '[备份].')
# 打开新文件
# 如果不是多次打开关闭文件,在一次打开过程中,多次写入,可以持续写入
# 但是如果下次打开该文件会将文件清空
copy_file = open(copy_file_name, 'w')
# copy_file = open(copy_file_name, 'a')
# # 读取旧文件数据
# content = file.read()
# # 写入新文件
# copy_file.write(content)
# 一般情况下,文件都是指定单次读取的最大字符的
# 循环进行读取并写入,直到所有字符读取完成
当执行 copy_file_name = file_name.replace('.', '[备份].') 这行代码时,它的作用是将字符串 file_name 中的所有点号(".")替换成字符串 "[备份].",然后将结果赋值给变量 copy_file_name。这通常用于创建文件名的备份或重命名文件。
举个例子,假设 file_name 的值为 "document.txt",执行这行代码后,copy_file_name 的值将变成 "document[备份].txt"。它在文件名中将点号替换为 "[备份].",这可以用于文件的备份或重命名,以区分原始文件和备份文件。
重命名和删除
rename
格式:os.rename(旧文件路径,新文件路径)
# 需求:将Python.txt重命名为 abc.txt
os.rename('bigdata.txt', 'abcd.txt')
移动位置
# 文件可以通过rename进行移动,移动的位置根据新文件路径决定,移动后同样可以修改名称
os.rename('abcd.txt', '文件/abcd.txt')
os.rename('abc.txt', '文件/a.txt')
remove
可以删除指定路径下的文件
如果被删除的路径不存在,则报错 (路径可以使用绝对路径,和相对路径)
import os
os.remove('bigdata[备份].txt')
os.remove('文件/a.txt')
os.remove('python[备份].txt')
# PermissionError: [Errno 1] Operation not permitted: '文件'
# 使用remove不能删除文件夹
os.remove('文件')
文件夹的操作
创建文件夹
os.mkdir(路径)
如果要创建的文件夹存在则会报错,不存在则创建,如果要创建的文件的上级目录不存在则无法创建文件
删除文件夹
os.rmdir(路径)
如果要删除的文件不存在,则会报错,如果文件非空则不能用rmdir删除,只能使用递归删除
os.remove('python[备份].txt')
PermissionError: [Errno 1] Operation not permitted: '文件'
使用remove不能删除文件夹
os.remove(‘文件’)
# 文件夹的操作
## 创建文件夹
> os.mkdir(路径)
如果要创建的文件夹存在则会报错,不存在则创建,如果要创建的文件的上级目录不存在则无法创建文件
## 删除文件夹
> os.rmdir(路径)
如果要删除的文件不存在,则会报错,如果文件非空则不能用rmdir删除,只能使用递归删除
如果文件夹非空是不能使用该代码删除