-
文件介绍
- 数据存放的容器
- 文件的作用:持久性存储数据内容
- 文件组成:
- 文件名
- 扩展名:一般不同的扩展名,对应不同的文件格式;不同的文件格式有着不同的存储约定,方便程序处理
- 文件内容
-
文件的使用流程
-
打开:open(“文件”,”模式",encoding=“gbk”):gbk是默认,可修改
模式:
- r:
- 以只读方式打开文件:默认模式;
- 文件的指针将会放在文件的开头;
- 注意:文件不存在会报错
- w:
- 以只写方式打开文件
- 文件的指针将会放在文件的开头:所以写入的新内容,会完全覆盖原内容
- 注意:文件不存在,则会自动创建一个新文件
- a:
- 以追加方式(只写)打开文件
- 文件的指针将会放在文件结尾:所以写入的内容,会新增到文件末尾
- 注意:文件不存在,则会自动创建一个新文件
- 增加b:
- rb
- wb
- ab
- 以二进制格式进行操作文件读写(如果文件是二进制文件,则选择此项)
- 增加+:
- r+:写入的新内容,会部分覆盖原内容;若先读后写,则会从读到的内容后面开始部分覆盖
- w+
- a+
- rb+
- rw+
- ra+
- 代表都是以“读写模式“进行打开:其他特性基本和+前面的模式一致,但关于部分操作,有细微差别
- r:
-
读写
-
定位
-
f.seek(偏移量,[0,1,2]):
0:文件流开始位置,默认值;偏移量应该是非负的
1:当前文件流所在位置;偏移量可正可负
2:文件流末尾;偏移量通常是负的
-
f.tell():返回值是文件指针所指位置
-
-
读
- f.read(字符数):字节数默认是文件内容长度;下标会自动后移
- f.readline([limit]):读取一行数据;limit限制的最大字节数
- f.readlines():会自动的将文件按换行符进行处理;将处理好的每一行组成一个列表返回
- for in:可以直接遍历f本身;也可以遍历行列表
- 判断是否可读:if f.readable():
- 注意
- 一般文件特别大时,可以使用readline方法
- 按行加载,节省内存
- 相较于其他两个读取方法,性能较低
- 其他两个方法一次性读取文件所有内容
- 虽然占内存
- 但处理性能高
- 一般文件特别大时,可以使用readline方法
-
写
- f.write(“内容”):返回值是写入的字节长度
- f.writeable():判定是否可写
-
-
关闭
- f.close():可以释放系统资源;会立即清空缓冲区的数据内容到磁盘文件
- 补充
-
-
文件的相关操作
-
模块:import os
-
操作:
-
重命名:
-
os.rename(src,dst):可修改文件、文件夹名称
#若当前目录下没有two目录,则会抛出异常 os.rename("one/one.txt","two/two.txt")
-
os.renames(old,new):
#若当前目录下没有two目录,则会创建two目录 os.rename("one/one.txt","two/two.txt")
-
-
删除
- os.remove(“文件路径”):删除文件(文件不存在会报错)
- 删除目录
- os.rmdir(path):不能递归删除目录;如果文件夹非空,会报错
- os.removedirs(path):可以递归的删除目录;如果文件夹非空,会报错
-
创建文件夹
-
or.mkdir(“文件夹名称”[,mode]):不能递归创建
-
了解:数字模式权限
- 文件拥有者
- 读:4(r)
- 写:2(w)
- 可执行:1(x)
- 同组用户
- 读
- 写
- 可执行
- 其他用户
- 读
- 写
- 可执行
os.mkdir("b",0o777)#三组用户均可读、写、执行
- 文件拥有者
-
-
获取当前目录:os.getcwd()
-
改变默认目录:os.chdir(“目标目录”)
-
获取目录内容列表:os.listdir("./"),当前目录内容列表
-
-
-
案例
-
文件复制
-
文件分类并生成文件清单
- 给定一批文件
- 按照文件后缀名,划分到不同的文件夹
- 文件夹名:后缀名
- 结果:
- avi
- a.avi
- b.avi
- jpg
- a.jpg
- b.jpg
- txt
- a.txt
- avi
#0.获取所有的文件名称列表 import os import shutil path = "files" if not os.path.exists(path): print(path+"路径不存在") exit() os.chdir(path) file_list = os.listdir("./") #1.遍历所有文件 for file_name in file_list: #2.分解文件的后缀名 #2.1获取最后一个.的索引位置 index = file_name.rfind(".") if index == -1: continue #2.2根据这个索引位置,当作起始位置,来获取后续的所有字符串内容 extension = file_name[index+1:] #3.查看一下,是否存在同名的目录 #4.如果不存在这样的目录:直接创建一个这样名称的目录 #5.目录存在,则移动过去 if not os.path.exists(extension): os.mkdir(extension) shutil.move((file_name,extension))
- 生成txt格式的文件清单
import os def listFiles(dir): file_list = os.listdir(dir) for file_name in file_list: new_fileName = dir + "/" + file_name if os.path.isdir(new_fileName): print(new_fileName) listFiles(new_fileName) else: print("\t" + file_name) print("") listFiles(".pytest_cache") def listFilesToText(dir,file): file_list = os.listdir(dir) for file_name in file_list: new_fileName = dir + "/" + file_name if os.path.isdir(new_fileName): file.write(new_fileName) listFilesToText(new_fileName,file) else: file.write("\t" + file_name) file.write("\n") f = open("list.txt","a") listFilesToText(".pytest_cache",f)
-
python文件基本操作总结
最新推荐文章于 2024-02-28 13:12:18 发布
本文介绍了Python中文件的打开模式、读写操作、文件命名与扩展、流式处理以及os模块的常用功能,如重命名、删除、创建文件夹和目录操作。通过实例演示了文件复制、分类和清单生成,涵盖了信息技术中文件操作的核心知识点。
摘要由CSDN通过智能技术生成