文件是数据存储容器,持久性的存储数据内容
- 文件使用流程
打开:open(“文件”,“模式”)
读写:定位-读-写
关闭:拔掉管道
- 文件操作
打开文件 读写文件 关闭文件(释放系统资源 立即清空缓冲区数据内容到磁盘文件)
# 文件打开
# 只读模式是默认模式
# 文件的指针会放在文件的开头
# r只读打开文件 文件的指针会放在文件开头 文件不存在会报错
f = open("test.txt", "r") # 相对文件 f管道
# 读写操作
content = f.read()
print(content)
# 关闭文件
f.close()
# w只写的方式打开文件
f = open("text.txt", "w")
# 文件的指针会放在文件的开头,写入的新内容会覆盖旧有文件内容
# 文件不存在会自动创建一个新的文件
content = f.write("yl")
f.close()
# a以追加的方式打开文件
# 文件的指针会放在文件的开头结尾,写入的新内容会新增在旧有文件内容后面
# 文件不存在会自动创建一个新的文件
f = open("text.txt", "a")
f.write("hhh")
# 增加b,rd、wb、ab 以二进制格式操作文件内容
# 二进制文件:图片、音乐、视频
# 1、打开图片,取出内容,获取内容的前半部分
fromFile = open("IMG_9327.JPG", "rb")
fromContent = fromFile.read()
print(fromContent)
fromFile.close()
# 2、打开另外一个文件,把取出的半部分写入另一个文件
toFile = open("to.JPG", "wb")
content = fromContent[0: len(fromContent) // 2]
toFile.write(content)
toFile.close()
# 增加+
# r+、w+、a+、rb+、rw+、ra+ 代表读写模式进行打开
文件定位
# 文件定位:f.seek(偏移量,[0,1,2]) 0:开头 1:当前位置 2:文件末尾 文本文件操作只能是0 如果想要1/2必须在二进制文件操作模式下(b)
# f.tell()
f = open("test.txt", "r")
# 读写操作
print(f.tell()) # 当前文件指针在哪
f.seek(2) # 指定文件指针
print(f.tell()) # 当前文件指针在哪
content = f.read()
print(content)
# 关闭文件
f.close()
文件读
# 读操作
# f.read(字节数)
f = open("test.txt", "r")
# 读写操作
content = f.read() # 默认是所有内容,下标自动后移
print(content)
f.seek(1)
content = f.read(3)
print(content)
# f.readline([limit])
# 读取一行数据
content = f.readline()
print(content, end="")
content = f.readline()
print(content, end="")
# f.readlines() 读取所有的行
content = f.readlines()
print(content)
遍历
# for in
f = open("test.txt", "r") # f是迭代器
# for i in f:
# print(i, end="") # 一行一行
content = f.readlines()
for i in content:
print(i, end="")
判定可读
# 判定是否可读
f.close()
# 总结:一般文件比较大的时候,可以使用readline方法
f = open("test.txt", "a") # f是迭代器
if f.writable():
print(f.write("yangliu"))
# f.write("内容) 返回值是写入的字节长度
# 判断是否可读 writeable
其他操作
# 文件相关操作
import os
# 重命名
os.remove("a.txt")
os.rename("text.txt", "a.txt")
# 删除文件、目录
# os.rmdir(path=) # 不能递归删除目录、文件夹空报错
# os.removedirs(path=) # 递归删除目录、文件夹空报错
# 创建文件夹
# os.mkdir("resouce")
# 获取当前目录
print(os.getcwd())
# 改变默认目录
# os.chdir("目标目录")
# 获取目录内容列表
print(os.listdir())
# 文件复制
# 步骤分析
# 只读模式打开复制文件
# 追加模式打开副本文件
sourceFile = open("test.txt", "r")
dstFile = open("a.txt", "a")
# 读取内容
while True:
content = sourceFile.read(1024) # 每次读取1024字节长度
if len(content) == 0:
break
# 写入
dstFile.write(content)
# 关闭两个文件
sourceFile.close()
dstFile.close()
# 文件分类
# 遍历所有文件(名称)
import os
import shutil
os.chdir("resouce")
file_list = os.listdir("./")
for file_name in file_list:
print(file_name)
# 分解文件后缀名
# 获取最后一个.的索引位置
index = file_name.rfind(".") # 右边开始查看
print(index)
# 根据索引位置当作起始位置,截取所有字符串
extension = file_name[index+1:]
print(extension)
# 查看是否存在同名目录
# 不存在创建
# 存在移动
if not os.path.exists(extension):
os.mkdir(extension)
else:
shutil.move(file_name, extension)