文件的各种操作
程序员文章站
2023-10-19 08:27:12
文件操作 只读 mode = 'r' mode = 'rb' 绝对路径:从磁盘开始查找的就是绝对路径 相对路径:相对与 上文件夹内容详解来查找的一种路径 文件路径推荐写法 用相对路径 只写 mode = 'w' mode = 'wb' a 模式 追加 'w' 只写 没有读的功能 打开word 打不开 ......
文件操作
f = open('文件的路径',mode = '打开文件的模式',encoding = '编码方式') # 打开 第一个内容是文件的名字(必须是字符串) # mode 第二个内容是我们对文件的操作方式 # encoding 第三个内容是我们文件的编码集 # f 文件句柄所有对文件的操作都是操作文件句柄
只读
mode = 'r'
# mode = 'r' 只读 content = f.read() # 读 一次性全部读取 content = f.readline() # 读取一行,但是一行后有\n换行 content = f.readlines() # 读取多行,存放在列表里 content = f.read(3) # mode = 'r' read里的内容就是表示读取的字符数量 print(content)
mode = 'rb'
f = open(r'c:\users\super la\desktop\qwe.txt', mode = 'rb') # r 和 \\ 一样都是转义 r'c:\users\super la\desktop\qwe.txt' 'c:\\users\\super la\\desktop\\qwe.txt' # 如果直接拷贝文件路径的话 将c转换成c # rb读取字节 print(f.read()) # 读取字节 不能指定编码格式
绝对路径:从磁盘开始查找的就是绝对路径
相对路径:相对与 上文件夹内容详解来查找的一种路径
文件路径推荐写法 用相对路径
只写
mode = 'w'
f = open('t1.txt', mode = 'w', encoding = 'utf8') f.write('lalalalaalal') f.write('啦啦啦啦啦啦') print(f.write('123456')) # 返回创建字符的数量 # w模式 如果文件不存在就新建一个 # 覆盖写,写之前先把文件清空
mode = 'wb'
f = open('qq.jpg',mode = 'rb') f = open('qq1.jpg',mode = 'wb') f.write(f.read())
a 模式 追加
f = open('t1',mode = 'a', encoding = 'utf8') f.write('lalala') #文件最后添加内容
'w' 只写 没有读的功能 打开word 打不开
读写
r+ 读 写
f = open('t1',mode = 'r+',encoding = 'utf8') # 读 写 #print(f.read()) #读内容 #f.write('啦啦啦') # 写 读 错误示范 写的时候会把源文件覆盖一部分 #f.write('啦啦啦') #print(f.read()) #读内容
w+ 写 读
f = open('t1',mode = 'w+',encoding = 'utf8') f.write('lalala') f.seek(0) # 移动文件光标 print(f.read())
a+ 追加 读
f = open('t1',mode = 'a+',encoding = 'utf8') f.seek(0) print(f.read()) f.write('哈哈哈')
最常用的r+
f = open(r'..\t1',mode = 'r+',encoding = 'utf8') # ..\ 返回上一级 #print(f.read()) # 读内容 #f.write('今天是个好日子')
总结:
# r 只读 不能写 # read() 读取全部 模式是r的时候 read(3) 读取3个字符 # 模式是rb的时候 read(3) 读取3个字节 # read() 读取一行 # readlines() 存放在一个列表中 # w 只写 不能读 覆盖写,先清空文件的内容,再写 # 当文件不存在的时候,创建一个文件 # a 追加 不能读 # 写的内容一直在问价的末尾 # r+ # 错误示范 先写在读 # 正确的是 先读在写 # w+ 写读 # 写读的时候是读不到内容的,除非移动光标 # a+ 追加写 读 # 写读的时候是读不到内容的,除非移动光标 # 最常用:r, w, a, r+, a+
f = open('t1',mode = 'r',encoding = 'utf8') print(f.read()) msg = f.read() print(msg) f.close() # 关闭文件 f = open('t1',mode = 'w',encoding = 'utf8') msg = f.write('啦啦啦') f.flush() # 刷新 print(msg) f.close()
with open('t1', mode = 'r', encoding = 'utf8') as f : # 上下文管理 ---面试题 msg = f.read() print(msg) # 不用自动关闭
文件其他操作
with open('t1','r',encoding = 'utf8') as f: print(f.read()) print(f.seeek(0)) # 字节 # 双数字 # (0,0)文件的头部 # (0,2)文件的尾部 # (0,1)当前位置 # 单数字 seek(0) # 字节 print(f.read(1)) # 读一个字符 print(f.tell()) # 查看光标的位置 数的字节
with open('t1','r',encoding = 'utf8') as f: f.truncate(9) # 截取 3个字符 指定字节之后的内容全部删除
文件更改及名字修改
import os os.rename('t2','t3') # 修改文件名
with open('t1','r',encoding = 'utf8') as f , open('t2','a',encoding = 'utf8') as f1: msg = f.read() # 将文件复制一份 msg = msg.replace('好','困') f1.write(msg) import os os.remove('t1') # 删除源数据 os.rename('t2','t3')
with open('t4',mode = 'r',encoding = 'utf8') as f, open('t6', mode = 'a',encoding = 'utf8') as f2: for i in f: print(i.strip()) f2.write(i) # 文件修改
今日总结:
# open() # 打开 # close 要关闭文件 # 写模式下需要刷新 flush() # r 只读 # read(3) 看对文件操作的模式来判断是字符还是字节 # mode = 'r' 时候是字符 # mode = 'rb' 时候是字节 # readline() 读取一行,自带\n(换行) # readlines() 读取全部以一行一行的形式存在放列表里 # a 追加 #文件的末尾写 # w 覆盖写 # 先清空文件,后写入文件 # rb ,wb ab自己试 # 只要是带b的模式,注意的是不是不能有encoding # a+ # 追加 + 读 注意 不管怎么读都读不到内容,除非移动光标 # w+ # 覆盖写 + 读 注意:先写后读 先读后写 除非移动光标 # r+ # 读 + 写 注意: 先读后写 # 其他操作 # seek() 移动光标 # 0,0 开头 # 0,1 当前 # 0,2 末尾 # 3 如果是文字就移动一位,如果是英文就移动3位 # tell() 查看光标 光标是按照字节数的 # truncate() 截取 内容是字节数 # 文件修改 import os # 导入 os和操作系统相关 # os.rename() # 重命名 第一个参数旧的名字,第二个是新的名字 # os.remove() # 删除这个文件 字符串 # with open('t1','r',encoding='utf-8')as f,\ # open('t2','w',encoding='utf-8')as f1: # 路径: # 绝对路劲: 从磁盘根目录开始查找 # 相对路劲: 相对于某个东西来查找就是相对路径 # 返回上一级 ..\ # c:\user\... 可以把单个\写成双\\ # 在路径的前面加一个r # 以上两种就是转义
上一篇: Python列表(List)知识点总结
下一篇: Python的UTC时间转换讲解