1、文件读写的两种方式
1, f = open("文件位置",mode = "r", encoding = "utf-8")
content = f.read()
2, with open("文件位置",mode = "r", encoding = "utf-8") as f:
content = f.read()
注意: 读取完的文件句柄一定要关闭. 即f.close().
2、r , w , a , r+ , w+ , a+
r: 只读
read(): 读取文件的所有内容.
read(n): 读取文件的前n个字符. 如果继续读取的话会在当前位置继续往后读, 而不是从头开始.
(如果以rb模式读取的话, read(n) 表示读取前n个字节).
readline(): 一次读取一行内容, 每行最后面有换行符 "\n". 继续读取的话会在当前位置继续往后读.
readlines(): 读取全部内容, 并将每行内容作为一个元素放进列表中. 继续读取的话会在当前位置继续往后读.
w: 只写
如果文件不存在, 则先创建文件, 再写进去; 如果文件已经存在, 则先删除全部旧内容, 再写新内容.
a: 追加
不论是a 还是a+ , 不管光标在什么位置, 都是在文件末尾添加新内容.
r+: 读写
光标位置是在开头的, 读完之后再写入, 写进文件末尾.
f = open("文件位置",mode = "r", encoding = "utf-8")
content = f.read()
f.write("内容")
注意: 如果先写再读, 则会在文件开头位置进行修改(不是添加), 然后读取修改内容后面的内容.(错误方式)
w+: 写读
先将内容清空, 然后再写进去, 光标位于文件末尾, 读取文件内容为空.
a+: 追加读
不论是先读还是后读都是读取不到内容的.
rb, wb
二进制的方式读取内容, 不用声明encoding编码方式, 常用于传输非文本内容(图片,音乐,视频等文件).
3、seek(), tell()
seek(): 光标移动到某位置.
f = open("文件位置",mode = "r", encoding = "utf-8")
f.seek(0) ----> 光标移动到开头位置
print(f.read()) ----> 读到全部内容
f.seek(0,2) ----> 光标移动到文件末尾
print(f.read()) ----> 读不到内容
注意: seek(参1,参2) 参1:表示偏移多少单位(字节为单位), 参2: 表示偏移到什么位置(0:文件开头; 1:当前位置; 2:文件末尾)
tell(): 光标当前位置.
输出的结果也是以字节为单位.
4、修改文件
只能将文件读取到内存中然后修改内容, 重新复制一份然后删除旧文件, 给新文件命名.
1 import os 2 with open("诗词","r",encoding="utf-8") as f ,\ 3 open("诗词_副本","w",encoding="utf-8") as s: 4 for i in f: 5 i= i.replace("的","得") 6 s.write(i) 7 os.remove("诗词") 8 os.rename("诗词_副本","诗词")