1.今日内容
- 文件操作的初识
- 文件操作的读
- 文件操作的写
- 文件操作的追加
- 文件的其他操作
- 打开文件的另一种方式
- 文件的改
2.具体内容
-
文件操作的初识
-
文件的操作步骤
- 打开文件
- 对文件句柄进行相应的操作
- 关闭文件
f = open('/Users/Documents/python文件操作.txt',mode = 'r',encoding = 'utf-8') content = f.read() f.close() ''' f = open('文件路径',mode = '文件操作方式',encoding = '编码') f 文件句柄 文件操作 f.close() ''' ''' 编码可以不写:默认操作系统默认的编码 windows:gbk linux:utf-8 os:utf-8 '''
-
-
文件操作的读
-
r --- 读取文本文件
- read() --- 全部读取
- read(3) --- 通过字符来读取
- readline() --- 读取一行
- readlines() --- 一行一行的读取并存放到列表中
- for
#read 全部读取。 f = open('文件的读',encoding = 'utf-8') content = f.read() print(content,type(content)) # 两岸猿声啼不住 str f.close() #read(3)按照字符读取 f = open('文件的读',mode = 'r',encoding = 'utf-8') content = f.read(3) print(content) # 两岸猿 f.close #readline() 读取一行 f = open('文件的读') content = f.readline() print(content) #两岸猿声啼不住 # f.close() #readlines() 返回一个列表,列表的每一个元素是原文件的每一行 f = open('文件的读') content = f.readlines() print(content) for 读取 f = open('文件的读') for line in f: print(line) f.close()
-
rb --- 读取非文本文件(不能指定编码)
f = open('跑车.jpeg',mode = 'rb') content = f.read() print(content) f.close()
-
r+ --- 读并追加 先读后写(顺序不能错)
f = open('文件的读',mode = 'r+') content = f.read() f.write('加上了么') f.close()
-
-
文件的写
-
w --- 写入文本文件(如果文件存在先清空在写入,如果不存在就新建)
f = open('文件的写',mode = 'w') f.write('写了么') f.close()
-
wb --- 写入非文本文件(不能指定编码)
f = open('跑车.jegp',mode = 'rb') content = f.read() f.close() f1 = open('跑车2.jepg',mode = 'wb') f1.write(content) f1.close()
-
w+ --- 写读,先写后读 ,需要移动光标
f = open('文件的写',mode = 'w+') f.write('人的一切痛苦,本质都是对自己无能的愤怒') f.seek(0,0) #移动光标到文件的开头 content = f.read() print(content) f.close()
-
-
文件的追加
-
a --- 追加写入文本文件(在原文件的末尾接着写)
f = open('文件的追加',mode = 'a') f.write('读万卷书,行万里路') f.close()
-
ab --- 追加写入非文本文件(不能指定编码)
-
a+ --- 追加写读,先写后读,需要移动光标
f = open('文件的写读',mode = 'a+') f.write('拉斯维加斯') f.seek(0,0) print(f.read()) f.close()
-
-
文件的其他操作
-
.tell() 查看光标当前位置(返回的是字节数)
-
seek('',''). 移动光标的位置
- seek(0,0) ---移动光标到文件开头
- seek(0,1) ---移动光标到当前位置
- seek(0,2) ---移动光标到文件末尾
- seek(9) --- 只有一个数时,移动到开头后的第几个字节位置
-
flush() 强制刷新
f = open('文件的写读') print(f.tell()) #0 print(f.read()) #拉斯维加斯 print(f.tell()) #15
-
-
文件打开的另一种方式
-
with open --- 面向对象的上下文管理
- 可以在操作完成后自动关闭文件
- 可以同时打开多个文件
- with open('文件路径',mode = '操作方式',encoding = '编码') as f
with open('文件的写') as f1,open('文件的读') as f2: print(f1.read()) f2.write('火锅王朝')
-
-
文件的改
- 当你相对原文件改动,但是想要备份原文件时,可以这样做
with open('文件的改',mode = r)as f1,open('文件改啦',mode = 'a')as f2: for line in f1: s = line.replace('一','二') f2.write(s) import os os.rename('文件的改','原文件的改') --- 对原文件进行备份 os.rename('文件改啦','文件的改') --- 把新文件改成原文件的名字