python day 09 文件操作

时间:2023-03-09 15:18:35
python day 09 文件操作

一 初识文件操作

使⽤用python来读写⽂文件是非常简单的操作. 我们使⽤用open()函数来打开⼀一个⽂文件, 获取到⽂文
件句句柄. 然后通过⽂文件句句柄就可以进⾏行行各种各样的操作了了. 根据打开⽅方式的不同能够执⾏行行的操
作也会有相应的差异.
打开⽂文件的⽅方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使⽤用的是r(只读)模式

读 1. " r "

f=open("e:/课堂练习.txt",mode="r",encoding="GBK")
for line in f:
print(line) f.close() #关闭

 f是一个可迭代对象
f = open("d:/周润发大战奥特曼.txt", mode="r", encoding="utf-8") # 默认跟着操作系统走的 GBK
# for line in f: # 内部其实调用的是readline()
# print(line)
# f.close() # 关闭

写  2." w "

f = open("d:/sylar.txt", mode="w", encoding="utf-8")
f.write("周笔畅\n") # 第一次写的时候. 先清空. 再写入. 继续写不会清空了
f.write("胡辣汤")
f.write("实付款\n") f.flush() # 必须加
f.close() #最后这个

追加  a

f = open("d:/sylar.txt", mode="a", encoding="utf-8")
f.write("娃哈哈") # 追加写
f.write("爽歪歪")
f.flush()
f.close()

r+ 读写

f = open("菜单", mode="r+", encoding="utf-8")  # r+最常见
s = f.read() # 读取一个字符
print(s)
f.write("胡辣汤") # r+模式. 如果你执行读了操作. 那么写操作的时候. 都是写在文件的末尾. 和光标没有关系
# f.write("ab") # 在文件开头写入. 写入的是字节,把原来的内容盖上 # for line in f:
# print(line)
# f.write("蛋炒饭")
# 正确用法: 先读后写
f.close()

w+ x写读

f = open("菜单", mode="w+", encoding="utf-8")  # 很少用.
f.write("疙瘩汤")
f.seek() # 移动到开头
content = f.read()
print("读取的内容是", content)
f.flush()
f.close()

a+ 追加读

f = open("菜单", mode="a+", encoding="utf-8")
f.write("韭菜鸡蛋饺子") f.seek()
content = f.read() #
print(content)

三  光标

 使用tell()可以知道光标在哪里
# seek()可以移动光标
# 读写的时候. 单位 字符
# 光标: 单位是字节
# 光标移动到末尾: seek(0,2)
  seek(偏移量, 位置)
# 位置: 0开头, 1当前位置, 2末尾
# 移动到末尾: seek(0, 2)

2.截断

f = open("我的天呐", mode="r+", encoding="utf-8")
f.seek()
f.truncate() # 如果没有参数. 按照光标来截断. 如果有参数. 截断到参数位置
f.flush()
f.close()

3.修改文件

mport os # 引入os模块

with open("alex", mode="r", encoding="utf-8") as f1, \
open("alex_副本", mode="w", encoding="utf-8") as f2: for line in f1:
new_line = line.replace("good", "sb")
f2.write(new_line) os.remove("alex")
os.rename("alex_副本", "alex")

4.日志处理

result = []
with open("2018-09-12.log", mode="r", encoding="utf-8") as f:
hang = f.readline()
title = hang.split("|")
for line in f:
line = line.strip() # 去掉空白, -- ::|刘伟|吃鸡
lst = line.split("|")
dic = {title[]: lst[], title[]: lst[], title[]: lst[]}
result.append(dic)
print(result)