文件操作
一: 只读, 读写
示例:
- f = open("E:\ 人员名单. txt" , encoding="utf-8" , mode="r")
- content = f.read()
- print(content)
- f.close()
解析:
6 ? f / f_obj / obj / file_hl / file_hanlder : 变量, 文件句柄
7 ? open : Windows 中的系统命令
8 ?? "E:\ 人员名单. txt" : 绝对路径(从根目录开始的路径)
- 9 #相对路径(同一个文件夹下的文件)
- 10 ??? mode
- 11 ## mode = "r" : 对文件只读
- 12 ## mode = "rb" : 一般用在非文字类型的文件: 图片, 视频, 文件的上传和下载功能
- 13 ## mode = "r+" : 读写(先读后写)
- 13 ## mode = "r+b" : 读写以 byte 类型
- 14
15 ??? 读 的五种模式, 返回字符串类型:
16 1 f.read() : 全部读出来
17 2 f.read(n): 若是 r 模式, 则按照字符读取, 只读取前 n 个字符
18 #若是 rb 模式, 则按照字节读取
19 3 f.readline() : 按行读
20 4 f.readlines() : 每一行做为一个元素, 存在列表中
21 5 推荐使用
22 '''23 f = open("E:\ 人员名单. txt","r",encoding="utf-8")
24 for i in f:
25 print(i)
26 f.close()
27 '''
28 ?? f.close() : 将文件句柄 / 动作关闭, 节省内存
'''常见报错分析:
1,UnicodeDecodeError : 存储的文件编码和打开的编码不一致;
2,SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \\UXXXXXXXX escape
路径前加 R 或 r 或 \\ 进行转义
二, 只写, 写读
示例:
1 通过 w 模式进行写操作
- f = open("E:\ 人员名单. txt","w",encoding="utf-8")
- f.write("牛六六 \ n 孙七七")
- f.close()
示例:
2 通过 wb 模式进行写操作(写入二进制文件)
- f = open("E:\ 人员名单. txt","wb")
- f.write("牛六六 \ n 孙七七".encode("utf-8"))
- f.close()
1 ? 只写的两种方式 : w wb
2 ? 写读 : w+ w+b
(注 : 将原有内容删除之后重新写入内容, 因光标在最后面, 所有写完之后去读没有内容显示, 可以在写之后将光标移动第一个 (f.seek(0)) 再去读文件中的内容)
2 ? 若没有文件, 则创建文件并写内容
3 ? 若有文件, 则将原文件全部内容删除重新写内容(覆盖)
三, 追加
示例:
- f = open("E:\ 人员名单. txt","a",encoding="utf-8")
- f.write("\n 钱八八")
- f.close()
- ## 只追加 : a ab
- ## 追加可读 :a+ a+b
- ## 在光标后面追加写入内容
四, 常用方法
f.tell() : 查询光标的位置(按照字节调整);
f.seek(m,n) : 移动光标(按照字节调整) m: 要移动的字节数, n: 指定开始移动字节的参考位置;
0 : 参考位置为文件开头
1 : 参考位置为当前所在位置
2 : 参考位置设为文件结尾
f.close() : 一定一定一定要关闭文件, 不然会占用资源;
f.read(n) : 读取前 n 个字符;
f.readline() : 读取一行;
f.readlines() : 读取文件全部行, 每行作为一个元素, 形成一个列表(适合读小文件)
f.write() : 写入, 不能自动换行;
f.writelines() : 写入列表内容, 可以写入多行;
f.readable() : 是否可读, 返回布尔值;
f.writeable() : 是否可写, 返回布尔值;
f.truncate(n) : 在原文件上截取 n 个字节;
f.name : 查看文件路径;
f.mode : 查看文件打开模式;
推荐使用的文件操作方法:
- ## 操作一个文件
- 1 with open("E:\ 人员名单. txt","r",encoding="utf-8") as f:
- 2 print(f.read())
- ## 操作多个文件
- 1 with open("E:\ 人员名单. txt","r",encoding="utf-8") as f1,2 open("E:\ 人员名单 1.txt","r",encoding="utf-8") as f2:
- 3 print(f1.read())
- 4 print(f2.read())
五, 实例
### 题目:
肩背一匹布, 手提一瓶醋, 走了一里路, 看见一只兔, 卸下布, 放下醋, 去捉兔. 跑了兔, 丢了布, 洒了醋.
存在电脑 E 盘的文件 绕口令. txt 中的内容如上, 将绕口令. txt 中的 "一" 改成 "二".
思路:
1, 创建一个新文件
2, 读取原文件
3, 将原文件的内容通过你想要的方式进行更改, 并写入新文件
4, 将原文件删除
5, 将新文件重命名原文件
- 1 import os
- 2 with open("E:\ 绕口令. txt",encoding="utf-8") as f1, 3 open("E:\ 绕口令(修改后).txt","w+",encoding="utf-8") as f2:
- 4 for i in f1:
- 5 i = i.replace("一","二")
- 6 f2.write(i)
- 7 os.remove("E:\ 绕口令. txt")
- 8 os.rename("E:\ 绕口令(修改后).txt","E:\ 绕口令. txt")
来源: http://www.bubuko.com/infodetail-2906847.html