1文件操作
1. r+(读写), w+(写读), a+(追加读), rb, wb, ab, (r+b, w+b, a+b)=> 一般不会用
b: 输入输出的是字节, 处理非文本, 需要移动光标进行反复读写
2. b bytes 读写操作的是字节, 用在非文本上
3. seek() 移动光标到xx位置
开头: seek(0), 末尾: seek(0,2)
truncate(数字)截断: 删除后面的内容
strip() 去掉空格, 还能去掉\n和\t
4. 文件修改
创建新文件, 把修改的内容写入新文件, 删除老文件, 重命名新文件
import os
os.remove("")删除文件
os.rename("原文件", "新文件名") 重命名文件
1 . r+(读写)文件操作
注意: 首先要写一个文件,才能进行下面操作
注意: 这里有一个坑
# 1,在没有进行任何操作之前进行写, 在开头写 # 2. 如果读取了一些内容, 在写, 写入的是最后 f = open("practice", mode="r+",encoding='utf-8') # r+模式, 默认情况下光标在文件的开头, 必须先读, 后写 s = f.read() print(s) # 不管你前面读了几个, 后面去写都是在末尾 f.write("哈哈") f.flush() f.close() f = open("practice", mode="r+",encoding='utf-8') f.write("呵呵") # 先写后读(写在开头) f.seek(0) # 光标设置在开头,可以让你从前面开始读 s = f.read() print(s) f.flush() # 刷新 f.close() # seek() 移动光标到XX位置 f = open("practice", mode="r+",encoding='utf-8') s = f.read(3) # 读三个 f.seek(9) # 设置seek里面每设置数字3,读的时候,就从开头向后移动一个字, # 就是从第二个字开始读,每次加3,就像后面移动一个字 # 是byte 9个字节, 一个字,所以移动3个字 print(s) print(f.read()) # 再次读,按照光标读的,向右移动三个字在读
2. w+(写读)文件操作
f = open("practice", mode="w+", encoding="utf-8") # w+操作, 会清空原来的内容. w+一般是不用 f.write("今天天气") f.seek(3) # 移动光标 s = f.read() print(s) f.flush() # 刷新 f.close()
3. a+(追加读)文件操作
f = open("good", mode="a+", encoding="utf-8") f.write('very good') f.seek(0) # 这里要设置光标,才能读出来,意思是在开头读(不然读不出来) s = f.read() print(s)
4. rb - 文件操作
f = open("good", mode="rb") # 读取的内容直接就是字节 bs = f.read() print(bs) # 把字节解码成熟悉的字 print(bs.decode("utf-8")) # 需要解码 f.close()
5. wb - 文件操作
# w, r, a == wb, rb, ab # b: 处理的是非文本 f = open("good", mode="wb") # 清除文件里面的内容,在写 f.write("hello".encode("utf-8")) # 进行编码 返回到文本的时候就还原 f.close() # 一般不会用
6. ab - 文件操作
# 一般不会用 f = open("good", mode="ab") # ab(追加) f.write("你好啊".encode("utf-8")) # 进行编码 返回到文本的时候就变成文字 f.close()
7. truncate() 截断
fo = open("good", "r+", encoding="utf-8") fo.seek(30) fo.truncate() # 从第30个字节以后的内容全部删除了 fo.seek(0) line = fo.readlines() print(line) fo.truncate(9) # 删除9个字节以后的内容 fo.seek(0) ss = fo.read() print(ss) fo.close()
8. 文件修改
import os # 方法一: with open("demo", mode="r", encoding="utf-8") as f1, \ open("demo1", mode="w", encoding="utf-8") as f2: s = f1.read() ss = s.replace('少','多') f2.write(ss) os.remove("demo") # 删除文件 os.rename("demo1", "demo") # 重命名文件 # 方法二: with open("demo", mode="r", encoding="utf-8") as f1, \ open("demo1", mode="w", encoding="utf-8") as f2: for line in f1: s = line.replace("多", "少") f2.write(s) os.remove("demo") # 删除文件 os.rename("demo1", "demo") # 重命名文件
9. strip()去掉头和尾的空格, 还能去掉\n和\t
p = '\t你好啊' print(p) print(p.strip()) # 输出: # 你好啊 # 你好啊 p1 = '\n可以啊' print(p1) print(p1.strip()) # 输出: # # 可以啊 # 可以啊 p = ' 不会' print(p) print(p.strip()) # 输出 # 不会 # 不会
浙公网安备 33010602011771号