* 文件内光标的移动 * 文件数据的修改 * 函数简介
今日内容概要
-
文件内光标的移动
-
文件数据的修改
-
函数简介
-
函数语法结构
今日内容详细
文件内光标的移动
"""光标的移动指的是移动多少个字符和字节 最后鼠标的指针落在了哪里""" '例如 创建一共文件 a.txt 内容写是 a今天很热呀' with open(r'a.txt', 'r',encoding='utf8')as f: data = f.read(4) # a今天很 print(data) 在文本模式下read() 这个括号里写几 就读取几个字符 with open(r'a.txt','rb')as f: data = f.read(10) # a今天很 在二进制模式下read() 这个括号里写几 就读取几个字节 (英文是一个字节为单位 中文是三个字节为单位 ) print(data.decode('utf8')) 用解码的方式可以看到二进制下字节的体现,也可以直接用 tell() 获取光标移动的字节 验证: with open(r'a.txt', 'r',encoding='utf8')as f: data = f.read(4) # a今天很 print(data) print(f.tell()) #10 seek(offset, whence) #可以控制光标的移动 offset 控制光标移动的位移量(字节为单位) whence 模式 0 基于文件开头移动多少字节 (文本模式 二进制模式都可以用) 1 基于光标当前所在位置移动多少字节 2 预计文件末尾移动多少字节 试验: # with open(r'a.txt', 'r', encoding='utf8') as f: # f.seek(4, 0) # print(f.read()) # 天很热呀 #(4,0)whence用的是 0 offset 位置上是4 就是4个字节 a.txt 内容为 a今天很热 (4,0)也就移动了4个字节 在a今的后面 所有身下的就是 天很热呀 # with open(r'b.txt', 'rb') as f: # data = f.read(4) # print(data.decode('utf8')) # a今 # f.seek(-3, 1) # print(f.read().decode('utf8')) # 今天很热呀 # f.seek(-6, 2) # print(f.read().decode('utf8')) # 热呀 # (-3, 1) 1 是指目前光标在的位置 -3是往前移动3个字节 # (-6, 2) 2 是指光标在末尾位置 -6 往前移动6个字节
文件内数据修改
'''机械硬盘存储数据的原理 1.数据的修改 其实是覆盖写入 2.数据的删除 其实是占有态自由态''' 代码修改文件的方式 1.覆盖写 先读取文件内容到内存 在内存中完成修改 之后w模式打开该文件写入 2.重命名 先读取文件内容到内存 在内存中完成修改 之后保存到另外一个文件中 再将原文件删除 将新的文件重命名为原文件 # 方式1 覆盖写 # with open(r'a.txt', 'r', encoding='utf8') as f: # data = f.read() # new_data = data.replace('很热', '很冷') # with open(r'a.txt', 'w', encoding='utf8') as f1: # f1.write(new_data) """优点:硬盘只占用一块空间 缺点:数据量较大的时候会造成内存溢出""" # 方式2:重命名 # import os # # with open('b.txt', 'r', encoding='utf8') as read_f, # open('.b.txt.swap', 'w', encoding='utf8') as wrife_f: # for line in read_f: # wrife_f.write(line.replace('很冷', 'hh')) # os.remove('b.txt') # 删除文件 # os.rename('b.txt.swap', 'b.txt') # 重命名文件 """ 优点:不会造成内存溢出 缺点:有那么一段时间需要占用硬盘两个地方的空间(可能) 也可能是在内存中创建没有刷到硬盘 """
函数简介
l1 = [1,2,3,4,5,6,7] # # print(len(l1)) # 方法一 # a = 0 # for i in l1: # a += 1 # print(a) # 方法二 '''函数可以避免多次统计代码的多行写入 在需要统计的地方用print(my_len())就可以代替'''
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)