1, 文件操作
参数: 1, 文件路径 2, 编码方式, 3, 执行动作 (打开方式), 只读, 只写,, 读写, 追加和读写
1 打开文件, 得到文件句柄并赋值给一个变量 2. 通过句柄对文件进行操作 3. 关闭文件
- f = open(yuyu,encoding=gbk,mode=r)
- # 可以设 f 变量, f_obj,file,f_handler..... 等文件句柄
- s = f.read()
- print(s)
- f.close()
open 是 windows 的系统功能, windows 的默认编码方式是 gbk,linux 操作系统默认为 utf-8
流程: 打开一个文件, 产生一个句柄, 对文件句柄进行操作, 然后关闭
读: r 只读
1, 文件以什么编码存储的就以什么编码方式打开
2, 文件路径: 绝对路径, 从根目录开始一级一级查找直到找到
相对路径, 在同一文件夹下直接写文件
五种方式:
1,f.read, 全部读出来只读模式, 可以不注明默认就是只读模式
f=open(yu.bak,encoding=utf-8)
2,f.readline, 一行一行的读取
3,f.readlines 将原文件的每一行作为一个列表的元素读取
4,f.read(n) 在 r 模式下按照字符读取 n=(字符数)
在 rb 模式下 read(n) 按照字节读取 rb 模式只读以 bytes 类型, 非文字类的文件时用 rb
5, 循环读取这种方式最好, 占内存少
- f = open(yu,r,encoding=utf-8)
- for i in f:
- print(i.strip())
- f.close()
写: w,write 写模式
- f = open(yu,w,encoding=utf-8)
- s = f.write(何时明月有)
- print(s)
- f.close()
w 写模式, 没有文件时创建一个文件写入内容, 有文件, 将原文件内容清空, 再写入内容
#1. 打开文件的模式有 (默认为文本模式):
r , 只读模式默认模式, 文件必须存在, 不存在则抛出异常
w, 只写模式不可读; 不存在则创建; 存在则清空内容
a, 只追加写模式不可读; 不存在则创建; 存在则只追加内容
- #2. 对于非文本文件, 我们只能使用 b 模式,"b" 表示以字节的方式操作 (而所有文件也都是以字节的形式存储的, 使用这种模式无需考虑文本文件的字符编码图片文件的 jgp 格式视频文件的 avi 格式)
- rb
- f=open(yu.bak,mode=rb)
- s= f.read(6)
- print(s)
- f.close()#balex\xe6\x98
- wb
- ab
注: 以 b 方式打开时, 读取到的内容是字节类型, 写入时也需要提供字节类型, 不能指定编码
#3,+ 模式 (就是增加了一个功能)
r+, 读写可读, 可写
w+, 写读可写, 可读
a+, 写读可写, 可读
#4, 以 bytes 类型操作的读写, 写读, 写读模式
r+b, 读写可读, 可写
w+b, 写读可写, 可读
a+b, 写读可写, 可读
1. 文件打开方式为文本模式时, 代表读取 3 个字符
2. 文件打开方式为 b 模式时, 代表读取 3 个字节
其余的文件内光标移动都是以字节为单位的如: seek,tell,truncate
注意:
1. seek 有三种移动方式 0,1,2, 其中 1 和 2 必须在 b 模式下进行, 但无论哪种模式, 都是以 bytes 为单位移动的
2. truncate 是截断文件, 所以文件的打开方式必须可写, 但是不能用 w 或 w + 等方式打开, 因为那样直接清空文件了, 所以 truncate 要在 r + 或 a 或 a + 等模式下测试效果
- f = open(yu,r+,encoding=utf-8)
- s = f.truncate(4)
- print(s)
- f.close()
2, 文件的修改
- # 创建一个新的文件
- # 读取一个原文件
- # 将原文件的内容通过你想要的方式进行更改并写入新文件
- # 将原文件删除
- # 将新文件重命名
with 语句:
1, 功能一自动关闭文件句柄 2, 一次性操作多个文件
- # import os
- # with open(yu,encoding=utf-8)as f1,\
- # open(yu.bak,encoding=utf,mode=w)as f2:
- # content = f1.read()
- # new_content = content.replace(SB,alex)
- # f2.write(new_content)
- # os.remove(yu)
来源: http://www.bubuko.com/infodetail-2540731.html