python文件操作

文件是数据存储容器,持久性的存储数据内容

  • 文件使用流程
    打开: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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值