20.文件操作
20.1 文件操作的初识
f1 = open(r'C:\Users\oldboy\Desktop\学习.txt',encoding='utf-8',mode='r')
content = f1.read()
print(content)
f1.close()
open内置函数,open底层调用的是操作系统的接口。
f1,变量,f1,fh,file_handler,f_h文件句柄。对文件进行的任何操作,都得通过文件句柄的方式。
encoding:可以不写,不写参数,默认编码本:操作系统的默认的编码
windows:gbk
linux:utf-8.
mac:utf-8
f1.close()关闭文件句柄。
文件操作三部曲:
1.打开文件。
2.对文件句柄进行相应的操作。
3.关闭文件
20.2 文件操作的读
read 全部读出来
f=open('文件的读',encoding='utf-8')
content=f.read()
print(content,type(content))
f.close()
read(n)按照字符读取
f=open('文件的读',encoding='utf-8')
content = f.read(5)
print(content)
f.close()
readline()按行读取
f = open('文件的读', encoding='utf-8')
print(f.readline())
print(f.readline())
print(f.readline())
f.close()
readlines()返回一个列表,列表中每个元素是源文件的每一行。
f = open('文件的读', encoding='utf-8')
l1 = f.readlines()
#['小刚,12,nan,大学\n', '小红,19,你,大学\n']
for line in l1:
print(line)
print(l1)#['小刚,12,nan,大学\n', '小红,19,你,大学\n']
f.close()
for 读取
f=open('文件的读', encoding='utf-8')
['abc太白金星最帅\n', '老男孩最好的老师\n', '老男孩教育是最好的学校\n', 'fhsjdkfha\n', 'fhdsfads\n']
for line in f:
print(line)
f.close()
f=open('tupian.jpg',mode='rb')
content=f.read()
print(content)
f.close()
20.3 文件操作的写
1.没有文件,创建文件,写入内容
f=open('文件的写',encoding='utf-8',mode='w')
f.write('随便写一点')
f.close()
2.如果文件存在,先清空源文件内容,在写入新内容
f=open('文件的写',encoding='utf-8',mode='w')
f.write('太白最帅...')
f.close()
3,wb
f = open('美女.jpg',mode='rb')
content = f.read()
# print(content)
f.close()
f1 = open('美女2.jpg',mode='wb')
f1.write(content)
f1.close()
20.4 文件的追加
没有文件创建文件,追加内容
f=open('文件的追加',encoding='utf-8',mode='a')
f.write('太白最帅....')
f.close()
有文件,在原文件的最后面追加内容
f=open('文件的追加',encoding='utf-8',mode='a')
f.write('123546.')
f.close()
20.5 文件操作的其他模式
1.r+读并追加,顺序不能错误
f = open('文件的读写', encoding='utf-8',mode='r+')
content=f.read()
print(content)
f.write('生活如此美好')
f.close()
错误示例:
f = open('文件的读写', encoding='utf-8', mode='r+')
f.write('人的一切痛苦,,,本质都是对自己无能的愤怒,,,')
content = f.read()
print(content)
f.close()
2.w+ 写读
f= open("day8",mode="w+",encoding="utf-8")
f.write("你您你你")
f.seek(0)需要把鼠标归零位
print(f.read())
f.close()
3.a+ 追加写读
1.
f = open("a",mode="a+",encoding="gbk")
print(f.tell())#查看的是字节
f.seek(0) #需要先将鼠标回到零位
print(f.read(1))#字符
f.write('没太大用')此时直接覆盖
f.close()
2,
f = open("a",mode="a+",encoding="gbk")
print(f.tell())#查看的是字节
f.seek(0) #需要先将鼠标回到零位
print(f.read(1))#字符
f.seek(0,2)#将鼠标归到最后的位置
f.write('可直接在后面添加')
f.close()
20.6 光标其他操作:
查看光标:tell()返回值,返回的就是当前光标的位置
移动光标:
seek(0,0) 文件开始位置
seek(0,1)光标的当前位置
seek(0,2)文件末尾位置
seek(3) 按照字节调节 使用utf-8 是3 gbk是2
20.7 文件操作的其他功能
1.tell获取光标的位置,单位字节。
f=open('文件的读写',encoding='utf-8')
print(f.tell())
content=f.read()
print(content)
print(f.tell)
f.close()
2.seek调整光标的位置
f=open('文件的读写',encoding='utf-8')
f.seek(7)
content=f.read()
print(content)
f.close()
3.flus强制刷新
f=open('文件的读写',encoding='utf-8',mode='w')
f.write('1232445')
f.flush()
f.close()
20.8 打开文件的另一种方式
优点:不用手动关闭文件句柄
with open('文件的读',encoding='utf-8') as f1:
print(f1.read()
with open('文件的读', encoding='utf-8') as f1,\
open('文件的写', encoding='utf-8', mode='w')as f2:
print(f1.read())
f2.write('hfdsjkghkajhsdjg')
20.9 文件改的操作
1, 以读的模式打开原文件。
2,以写的模式创建一个新文件。
3,将原文件的内容读出来修改成新内容,写入新文件。
4,将原文件删除。
5,将新文件重命名成原文件。
low版
import os
# 1, 以读的模式打开原文件。
# 2,以写的模式创建一个新文件。
with open('alex自述',encoding='utf-8') as f1,\
open('alex自述.bak',encoding='utf-8',mode='w') as f2:
# 3,将原文件的内容读出来修改成新内容,写入新文件。
old_content = f1.read()
new_content = old_content.replace('alex', 'SB')
f2.write(new_content)
os.remove('alex自述')
os.rename('alex自述.bak','alex自述')
进阶版
import os
# 1, 以读的模式打开原文件。
# 2,以写的模式创建一个新文件。
with open('alex自述',encoding='utf-8') as f1,\
open('alex自述.bak',encoding='utf-8',mode='w') as f2:
# 3,将原文件的内容读出来修改成新内容,写入新文件。
for line in f1:
# 第一次循环 SB是老男孩python发起人,创建人。
new_line = line.replace('SB', 'alex')
f2.write(new_line)
os.remove('alex自述')
os.rename('alex自述.bak','alex自述')