python文件的操作
Posted 小破孩儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python文件的操作相关的知识,希望对你有一定的参考价值。
以前总听别人说,把文件改成只读模式,也经常在文件属性中看到,是‘只读‘,今天终于了解到一些相关的文件操作
在文件中,有以下的几种模式:
r 只读
r+ 读+写
w 覆盖写
w+ 先覆盖再写,然后再读
a 追加
a+ 追加读
只读: mode = "r"或"rb",读文件r 读字节rb
f = open(‘文件名‘,mode = ‘r‘,encoding=‘utf-8‘)
打开 第一个内容是文件的名字,(必须是字符串)
mode 第二个内容是对这个文件的操作方式(模式)
encoding 第三个内容是这个文件的编码集
f 文件句柄.所有对于文件的操作,都是操作文件句柄
content = f.read( ) 读, 一次性全部读取
mode = ‘r‘,read里的内容就是表示读取的字符数量
content = f.readline( ) 读取一行,但是尾部有一个
(换行)
content = f.readlines( ) 一行一行读取,,读取多行,都存放在列表里
f = open(‘t1‘,mode = ‘r‘,encoding = ‘utf-8‘)
mode = ‘r‘,只读模式.
read(),括号里的参数如果是单数,就代表读取的字符数量,例如read(3),就是读取前三个字
f = open(‘t1‘,mode = ‘rb‘)
mode = ‘rb‘, 读取字节,不能指定编码集; read(3)在当前模式下,是读取三个字节
路径:
绝对路径: 从磁盘查找额就是绝对路径
相对路径: 相对于某个文件的位置(推荐写法)
存放文件路径也必须是字符串类型,全部替换双斜杠,如果文件路径过长,在路径前加一个r,和\一样,都是转义
f = open(‘t1.txt‘,mode = ‘w‘,encoding = ‘utf-8‘)
写: mode = "w"或"wb" 写文件: w 写字节:wb (只写,没有读的功能)
f.write("新的内容") w 模式如果文件不存在,就新建一个;
覆盖写,在写之前就先把文件清空
f = open(‘t1‘,mode = ‘a‘,encoding = ‘utf-8‘)
追加: mode = ‘a‘, 在文件的末尾位置添加内容
r + 读+写
w + 写+读
a + 追加+读
f = open(‘t1‘,mode = ‘r+‘,encoding = ‘utf-8‘) 先读后写
f = open(‘t1‘,mode = ‘w+‘,encoding = ‘utf-8‘) 先写后读
f.seek() 移动光标位置,先写后读时光标默认是在最后,读取时需要把光标移动到最前面
例:
f = open(‘t1‘,mode = ‘w+‘,encoding = ‘utf-8‘) f.write("写的内容") f.seek( ) 移动光标位置 print(f.read())
f = open(‘t1‘,mode = ‘a+‘,encoding= ‘utf-8‘) 追加写+读
f.seek(0)
print(f.read())
f.write(‘‘)
.. 返回上一级
f.flush() 刷新
上下文管理 with open
with open(‘文件路径‘,mode = ‘模式‘,encoding = ‘utf-8‘)as f:
msg = f.read()
print(msg) 不用手动关闭文件,操作完成之后自动关闭
其他操作
f.seek(),移动光标的位置
f.tell(),查看光标的位置
f.truncate(),截取,指定光标的位置进行截取,按字节进行计算
with open("文件路径",mode = ‘模式‘,encoding=‘utf-8‘)as f:
pirnt(f.read())
print(f.tell()) tell 查看光标的位置,数的是字节
with open("文件路径",mode=‘模式‘,encoding=‘utf-8‘)as f:
f.trunca(9),截取9个字节,也就是3个字符,在python3中,要先手动移动光标,再进行 截取
参数:
双数字:0,0文件的头部;0,1光标当前的位置;0,2文件尾部
单数字:数字表示的是字节
os模式:
os.rename("旧的名字","新的名字")
os.remove("要删除的文件")
文件修改
***** 先做备份
with open("文件路径",mode= ‘模式‘,encoding=‘编码集‘)as f,
open("文件路径",mode=‘模式‘,encoding=‘编码集‘)as f1:
f:原文件的句柄
f1:新文件的句柄
msg = f.read() 读取原文件的内容,临时存到msg变量中
s = msg.replace(‘被修改的内容‘,‘修改后的内容‘)
f1.write(s) 将修改的内容写到新的文件中, 原文件不动
ps:有一个弊端,当文件太大的时候,内存很容易溢出,需要用for循环
with open(‘文件路径‘,mode=‘模式‘,encoding=‘utf-8‘)as f,
open(‘文件路径‘,mode=‘模式‘,encoding=‘utf-8‘)as f1:
for i in f: #一行一行的读取
msg = i.strip().replace("旧内容","新内容")
f1.write(msg) #将每行内容写入到新的文件中
以上是关于python文件的操作的主要内容,如果未能解决你的问题,请参考以下文章