python基础_10

文件内光标的移动

"""
with open(r'aaa.txt', 'r', encoding='utf8') as f:
    data = f.read(3)  # a你好
    print(data)
在文本模式下read括号内的数字表示读取几个字符


with open(r'aaa.txt', 'rb') as f:
    data = f.read(4)  # a你
    print(data.decode('utf8'))
在二进制模式下read括号内的数字表示读取几个字节(英文一个字节 中文三个字节)


tell()  获取光标移动的字节数


seek(offset,whence)
	offset	控制光标移动的位移量(字节)
	whence  模式
		0	基于文件开头移动多少字节
		1	基于光标当前所在位置移动多少字节
		2	基于文件末尾移动多少字节
	ps:1和2只能在二进制模式下使用 0无所谓
"""
# with open(r'aaa.txt', 'r', encoding='utf8') as f:
#     data = f.read(3)  # a你好
# print(data)
# print(f.tell())  # 7
# data1 = f.read()
# print(data1)  # 啊

# with open(r'aaa.txt', 'rb') as f:
#     data = f.read(4)  # a你
#     print(data.decode('utf8'))


# 代码控制光标移动
# with open(r'aaa.txt', 'r', encoding='utf8') as f:
#     data = f.read()  # a你好
#     print(data)
#     f.seek(0,0)
#     print(f.read())


# with open(r'aaa.txt', 'rb') as f:
#     data = f.read(4)
#     print(data.decode('utf8'))  # a你
#     # f.seek(-3,1)
#     # print(f.read().decode('utf8'))  # 你好啊
#     f.seek(-3, 2)
#     print(f.read().decode('utf8'))  # 啊

# 小练习:实现动态查看最新一条日志的效果
import time
with open('access.log', 'rb') as f:
    f.seek(0, 2)
    while True:
        line = f.readline()
        if len(line) == 0:
            # 没有内容
            time.sleep(0.5)
        else:
            print(line.decode('utf-8'), end='')

文件内数据修改

"""
机械硬盘存储数据的原理
	1.数据的修改 其实是覆盖写
	2.数据的删除 占有态自由态
"""
代码修改文件的方式
	1.覆盖写
    	先读取文件内容到内存 在内存中完成修改 之后w模式打开该文件写入
	2.重命名
    	先读取文件内容到内存 在内存中完成修改 之后保存到另外一个文件中
       再将原文件删除 将新的文件重命名为原文件
 
# 方式1:覆盖写
# with open(r'demo.txt','r',encoding='utf8') as f:
#     data = f.read()
# new_data = data.replace('DSB','NB')
# with open(r'demo.txt','w',encoding='utf8') as f1:
#     f1.write(new_data)
"""
优点:硬盘只占用一块空间
缺点:数据量较大的时候会造成内存溢出
"""
# 方式2:重命名
import os

with open('demo.txt', 'r', encoding='utf8') as read_f, \
        open('.demo.txt.swap', 'w', encoding='utf8') as wrife_f:
    for line in read_f:
        wrife_f.write(line.replace('NB', 'SB'))
os.remove('demo.txt')  # 删除文件
os.rename('.demo.txt.swap', 'demo.txt')  # 重命名文件
"""
优点:不会造成内存溢出
缺点:有那么一段时间需要占用硬盘两个地方的空间(可能)   也可能是在内存中创建没有刷到硬盘
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值