首页 / PYTHON / Python学习-0612
Python学习-0612
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python学习-0612,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2289字,纯文字阅读大概需要4分钟。
内容图文
一、控制文件内指针的移动
coding:utf-8
一:文件内指针移动的单位是什么?
读出二进制解码得到的字符串:hello你好
硬盘: 0101010101101010101011010101010
只有t模式下read(n),这个n代表的字符个数
with open(‘a.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
data=f.read(6)
print(f.tell())
print(data)
了解:硬盘容量的本质就是能存多个二进制数bit
8bit=>1Byte
1024Byte = 1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
1GB=1024*1024*8
with open(‘a.txt‘,mode=‘rb‘) as f:
data=f.read(8)
print(type(data))
print(len(data))
print(data.decode("utf-8"))
with open(‘b.txt‘,mode=‘rb‘) as f:
data=f.read(7)
print(type(data))
print(len(data))
print(data.decode("gbk"))
r+
a
with open(‘a.txt‘, mode=‘r+t‘, encoding=‘utf-8‘) as f:
f.truncate(7)
除此之外,所有的被动的、主动的文件指针移动的单位都是字节的个数
二: 主动/单纯地控制文件指针移动
f.seek(x,y)
x代表的是移动的字节个数
y代表的模式:
0:代表参照物是文件开头,可以在t模式和b模块下使用
示范:
with open(‘d.txt‘, mode=‘rt‘, encoding=‘utf-8‘) as f:
f.read(3)
print(f.tell()) # 5
f.seek(3, 0)
print(f.tell()) # 3
1:代表参照物是当前位置,只能在b模式下用
with open(‘d.txt‘, mode=‘rb‘) as f:
f.read(1)
print(f.tell()) # 1
f.seek(2,1)
print(f.tell()) # 3
# print(f.read().decode("utf-8"))
2:代表参照物是文件末尾,,只能在b模式下用
with open(‘d.txt‘, mode=‘rb‘) as f:
f.seek(3333, 2)
print(f.tell()) # 14+3333=3347
f.seek(-3, 2)
print(f.tell())
f.seek(0, 2) # 快速将指针移动到文件末尾
print(f.tell())
with open(‘d.txt‘, mode=‘a‘) as f:
print(f.tell())
开发如下命令:
tail -f access.log
import time
with open(r"/day10/代码/access.log", mode="rb") as f:
f.seek(0, 2) # 快速将指针移动到文件末尾
while True:
line = f.readline()
if len(line) == 0:
time.sleep(0.1)
else:
print(line.decode(‘utf-8‘),end=‘‘)
二、文件的修改
引入:硬盘数据没有改这么一说,都是用新内容覆盖老内容
with open(‘e.txt‘, mode="r+t", encoding=‘utf-8‘) as f:
f.seek(9, 0)
f.write("你好")
但是文件是可以修改的,但都是模拟出来的,如何实现,借助内存
具体来说,有两种方式
方式一原理:
1、把硬盘内容全部读入内存,
2、在内存中把内容一次性修改完毕
3、然后把修改完毕的结果覆盖回原文件
with open(‘f.txt‘, mode=‘rt‘, encoding=‘utf-8‘) as read_f:
data = read_f.read()
print(data)
res=data.06
with open(‘f.txt‘, mode=‘wt‘, encoding=‘utf-8‘) as write_f:
write_f.write(res)
总结方式一:
优点:不费硬盘,硬盘数据只有一份
缺点:费内存,文件过大时内存占用过多
方式二原理:
1、把硬盘内容全部读入内存,
2、在内存中把内容一次性修改完毕
3、然后把修改完毕的结果覆盖回原文件
import os
with open(‘f.txt‘, mode=‘rt‘, encoding=‘utf-8‘) as read_f,\
open(".f.txt.swap",mode=‘wt‘,encoding=‘utf-8‘) as write_f:
for line in read_f:
write_f.write(line.replace("egon",‘===>EGON<===‘))
os.remove(‘f.txt‘)
os.rename(‘.f.txt.swap‘, ‘f.txt‘)
总结方式二:
优点:不费内存,内存同一时刻只有文件的一行内容
缺点:费硬盘,在修改过程中硬盘上会同时存放两份数据
原文:https://www.cnblogs.com/wuweihuang/p/13111633.html
内容总结
以上是互联网集市为您收集整理的Python学习-0612全部内容,希望文章能够帮你解决Python学习-0612所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。