day 009总结

文件处理

什么是文件处理

修改存储的信息

什么是文件

操作系统提供的虚拟概念,存储信息(用二进制存储信息)

操作文件的流程

1.打开文件

f=open(r'D:\上海python12期视频\python12期视频\day 09\test.py','w',encoding='utf-8')

2.修改/读取文件

f.write('''
孩儿立志出湘关,学不成名誓不还
埋骨何须桑之地,人生无处不青山
''')

3.保存文件

f.flush()#快速保存,可以不使用

4.关闭文件:python是通过操作系统操作文件

f.close()#告诉操作系统关闭文件

文件的三种打开模式

读取:rt read_text 读取文本内容 只读

f=open(r'D:\上海python12期视频\python12期视频\day 09\test.py','rt',encoding='utf-8')
data=f.read()#读取所有文本内容
print(data)
print(f.readable())#判断是否可读
print(f.writeable())#判断是否可写

仅作了解

print(f.readline())#一行一行读取
print(f.readlines())#读取所有行放入列表

循环读出文本内容

for i in f.read():#循环出一个个字符print(i)
for i in f:print(i)#循环出一行行,每行末尾默认有一个换行

wt: 清空写入,不可读

f.write('abc')

仅作了解

f.writelines(['asd','dgg','werf'])#自动拼接列表元素,一行写入

at: 追加写入

f=open(r'D:\上海python12期视频\python12期视频\day 09\test.py','rt',encoding='utf-8')
f.writeable('中')

打开文件的两种方式

t-->文本 b-->二进制模

这两个东西不单独使用,一般与r/w/a联用,不需要encoding

b模式一般用于图片/音频/视频的保存

绝对路径和相对路径

文件的路径:文件在硬盘的地址

绝对路径

从盘符开始 D:\上海python12期视频\python12期视频\day 09\test.py

相对路径

执行文件(当前运行的文件)的文件夹下的文件名,执行文件和打开文件属于同一文件夹下

未来尽量使用相对路径

f=open('test.py','r',encoding='utf-8')
print(f.read())

with管理文件上下文

with提供一个自动关闭文件(结束了操作系统的占用)

with open('test.py','r',encoding='utf-8') as f:#在这个缩进下不会关闭文件,在这个缩进下对文件操作data=f.read()#data放在python的内存中
print(data)#关闭文件(操作系统),没有关闭Python内存中的文件
print(f)#只涉及python
print(f.read())#涉及操作系统,报错

文件的高级应用

可写可读 r+

with open('test.py','r+',encoding='utf-8') as fr:print(fr.readable())print(fr.writeable())fr.write('高级')#光标在文件头部,覆盖后面的字符

可写可读 w+和w没有任何区别

with open('test.py','w+',encoding='utf-8') as fr:print(fr.readable())print(fr.writeable())

可读可写 a+ a模式默认光标在尾部

with open('test.py','a+',encoding='utf-8') as fr:print(fr.readable())print(fr.writeable())

综上:如果你真的有即可读有可写的需求,用两种不同的模式打开文件

光标的高级应用(移动光标)

八个进制位为一个字节,3个8进制位组成一个字符(针对中文,英文是一个字节一个字符)

下三种移动光标的位置(以字节为单位)

seek

with open('test.py', 'rb') as fr:fr.seek(5)  # 移动了3个字节,一个中文,默认从开头开始        print(fr.read())                                  print(fr.read().decode('utf8'))

whence规定只有0,1,2 三种模式 # 0相当于文件头开始;1相当于当前文件所在位置;2相当于文件末尾

fr.seek(3, 0)  #0从开头                          print(fr.read().decode('utf8'))    
fr.seek(3, 1)    
print(fr.read().decode('utf8'))    
fr.seek(0, 2)    
print(fr.read())

tell : 告诉你当前所在位置

 with open('test.py', 'rb') as fr:fr.seek(3, 0)print(fr.tell())

truncate: 截断

with open('test.py', 'ab') as fa:   fa.truncate(2) 

移动光标(以字符为单位)read

 with open('test.py', 'r', encoding='utf8') as fr:print(fr.read(3))  # n表示n个字符,不加默认读取所有 # 中文和英文都属于一个字符

文件的修改

文件没有修改一说,只有覆盖

缓存文件的原理:同时打开多个文件

import os
with open('test.py','r',encoding='utf-8') as fr,\open('test_swap.py','w',encoding='utf-8') as fw:data=fr.read()data=data.replace('sb','傻逼')fw.write(data)
os.remove('test.py')
os.rename('test_swap.py','test.py')

如果文件过大

import os
with open('test.py','r',encoding='utf-8') as fr,\open('test_swap.py','w',encoding='utf-8') as fw:for i in fr:s='傻逼'fw.write('sb',s)fw.flush#保存
os.remove('test.py')
os.rename('test_swap.py','test.py')

转载于:https://www.cnblogs.com/zqfzqf/p/11544599.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部