文件操作
文件操作
初始文件操作
使用Python来读写文件是非常简单的操作,我们使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了
根据打开方式的不同能够执行的操作会有相应的差异.
打开文件的方式:
r,w,a r+,w+,a+ rb,wb,ab r+b,w+b,a+b
默认使用的是r(只读模式)
绝对路径和相对路径
1.绝对路径:从磁盘根目录开始一直到文件名
2.相对路径:用一个文件夹下的文件,相对于当前这个程序所在的文件而言.如果在同一个文件中,则相对路劲就是这个文件名.如果再上一层文件夹则要使用../
相关小命令:
open() # 打开
close 要关闭文件
写模式下需要刷新 flush()
mode 第二个内容是咱们对这个文件的操作方式
encoding 第三个内容是咱们这个文件的编码集
只读操作(r/rb)
read()将文件中的内容全部读取出来;弊端 如果文件很大就会非常的占用内存,容易导致内存奔溃
read()读取的时候指定读取到什么位置,我们指定先读取前三个内容,然后在使用read()进行读取会继续向后读取,而不会从头开始读取
f = open('a.txt',mode='r',encoding='utf-8') content = f.read() print(content) f.close() 结果: 标题很好
mode='r'打开的是字符
mode='rb'打开的是字节
上边的内容open()函数打开护士少妇萝莉的文件,然后赋值到一个句柄中,open函数中的mode是对这个文件操作是的一种模式
encoding这个是制定文件中的编码集
f = open('a.txt',mode='rb') content = f.read() print(content) f.close() 结果: b'\xe6\xa0\x87\xe9\xa2\x98\xe5\xbe\x88\xe5\xa5\xbd'
rb 读出来的数据是bytes类型,在rb模式下,不能encoding字符集
rb的作用:在读取非文本文件的时候,比如要读取mp3,图像,视频等信息的时候就需要用到rb,因为这种数据是没办法直接显示出来的
在后面我们文件上传下载的时候还会用到.
readline()
readline()读取每次只读取一行,注意点:readline()读取出来的数据在后面都有一个\n(自带换行)
解决这个问题只需要在我们读取出来的文件后边加一个strip()就OK了
f = open('a.txt',mode='r',encoding='utf-8') content = f.readline().strip() content1 = f.readline().strip() content2 = f.readline().strip() print(content) print(content1) print(content2) f.close() 结果: 标题很好 标题很好 标题很好
readlines()
readlines()读取全部以一行一行的形式存放在一个列表当中.
f = open('a.txt',mode='r',encoding='utf-8') content = f.readlines() print(content) f.close() 结果: ['标题很好\n', '标题很好\n', '标题很好']
如果有较大的文件我们进行读取不推荐使用read()一次性将文件全部读取到内存中,内存容易崩溃
f = open('a.txt',mode='r',encoding='utf-8') for line in f: print(line.strip()) f.close()
模式是r的时候 read(3) 就是读取3个字符
模式是rb的时候 read(3) 就是读取3个字节
追加a
文件的末尾追写
with open('a.txt',mode='a',encoding='utf-8')as f: f.write('ss')
覆盖写w
先清空文件,后写入文件
with open('a.txt',mode='w',encoding='utf-8')as f: f.write('ss')
rb ,wb ab 只要是带b的模式,注意的是不是不能有encoding a+ 追加 + 读 注意 不管怎么读都读不到内容,除非移动光标 w+ 覆盖写 + 读 注意:先写后读 先读后写 除非移动光标 r+ 读 + 写 注意: 先读后写
其他操作:
移动光标,查看光标,截取
seek() 移动光标 0,0 开头 0,1 当前 0,2 末尾
tell() 查看光标 光标是按照字节数的
truncate() 截取 内容是字节数
文件修改:
import os # 导入 os和操作系统相关
# os.rename() # 重命名 第一个参数旧的名字,第二个是新的名字
# os.remove() # 删除这个文件 字符串
转义:
# 返回上一级 ..\
# c:\user\... 可以把单个\写成双\\
# 在路径的前面加一个r
替换文件中的内容并考入到另一个文件,删除源文件修改文件名字
with open('t3','r',encoding='utf-8')as f,\ open('t5','a',encoding='utf-8')as f1: msg = f.read() # 将源文件复制一份 msg = msg.replace('好','困') f1.write(msg) import os os.remove('t3') # 删除原数据 os.rename('t5','t3')
posted on 2019-01-09 13:50 🐳️南栀倾寒🐳️ 阅读(94) 评论(0) 编辑 收藏 举报