1.withopen('ra.txt', 'r', enconding='utf8') as f:
print(f.read(3))
# read在文本模式下 括号内数字表示是读取指定的字符个数2.withopen(r'a.txt', 'rb') as f:
print(f.read(9).decode('utf8'))
print(f.read(1).decode('utf8'))
# read在二进制模式下 括号内的数字表示的是读取指定的字节数# unicode所有的字符都是用2bytes来起步表示# utf8中文用3bytes来表示 英文用1bytes来表示 往后unicode可以不做研究 只研究utf8、gbk等编码即可# 2.控制光标的移动# with open(r'a.txt','r',encoding='utf8') as f:# print(f.read())# f.seek(3,1)# print(f.read())# with open(r'a.txt', 'rb') as f:# print(f.read(3).decode('utf8'))# # f.seek(3, 1) # 基于当前位置 继续往后移动三个字节# f.seek(-3, 2) # 基于文件末尾 往前移动三个字节# print(f.tell()) # 获取光标基于文件开头的字节数# print(f.read().decode('utf8'))"""
seek方法可以控制光标的移动 在文本模式下移动的单位也是字节数
seek(offset,whence)
offset:控制移动的字节数
whence:控制模式
0:相对于文件开头(让光标先移动到文件开头)
支持文本模式和二进制模式
1:相对于当前位置(让光标先停留在当前位置)
只支持二进制模式
2:相对于文件结尾(让光标先移动到文件末尾)
只支持二进制模式
"""# 实时检测文件内是否有新增的内容并打印出来(没有太多的实际意义)withopen('access.log', mode='rb') as f:
f.seek(0, 2)
whileTrue:
line = f.readline()
iflen(line) == 0:
# 没有内容passelse:
print(line.decode('utf-8'), end='')
文件修改
1.硬盘有占有态和自由态
我们删除数据其实就是将数据原来的位置标记成自由态
之后如果有新的数据进来了并且落到了自由态位置那么直接覆盖
import os # 模块(后面会学)withopen('b.txt', 'r', encoding='utf-8') as read_f, \
open('.b.txt.swap', 'w', encoding='utf-8') as wrife_f:
for line in read_f:
wrife_f.write(line.replace('jason', 'jerry'))
os.remove('b.txt') # 删除文件
os.rename('.b.txt.swap', 'b.txt') # 重命名文件
函数简介
"""如何查看内部源码 ctrl+左键点击"""
l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
# 统计列表内元素的个数# print(len(l1))# n = 0# for i in l1:# n += 1# print('列表内元素的个数', n)'''不需要len也实现了统计元素个数的方法 但是兼容性不强'''
s = 'hello world'print(len(s))
# def my_len():# n = 0# for i in s:# n += 1# print('字符串中字符的个数',n)
虽然上述方式实现了不借助与len完成元素个数的统计
但是需要反复的编写相同的代码
#函数与循环的区别# 我们需要在不同的地方 反复执行相同的代码>>>:函数# 我们需要在相同的地方 反复执行相同的代码>>>:循环1.真正的len可以统计指定数据的元素个数
而我们的len目前只能统计指定的数据
2.真正的len执行完成后有结果
而我们的len执行完成后结果是Nonelen是python解释器提前给我们写好的函数(工具)
我们只需要拿来使用即可 这种类型的函数称之为内置函数
我们自己写的函数称之为自定义函数!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)