文件函数的了解

今日内容详细11

二进制模式下读写操作

#现在是t模式,读前5个字符,按字符数打印
with open('a.txt','r',encoding='utf-8') as f:
    print(f.read(5))#指定打印几个字符,默认全部打印

# 现在是b模式,按字节数打印,一个汉字是三个字节
with open('a.txt','rb') as r:
    print(r.read(5).decode('utf-8'))#指定打印几个字节,默认全部打印

控制文件内指针的移动

#控制光标的移动
seek(self, offset: int, whence: int = 0) -> int:
 offset:int 
	代表的是移动的偏移量
    如果是正数,就往右边移
    如果是负数,就往左边移----》左边可移动才行
 whence: int =0
	代表的是模式
    #0:默认的模式,代表指针移动的字节数是以文件开头为参照物,它能使用t和b模式
    #1:代表指针移动的字节数是以当前所在的位置为参照物的,只支持b模式,t模式不行
    #2:该模式代表指针移动的字节数是以文件末尾的位置为参照的
   eg:
with open('a.txt','r',encoding='utf-8') as f:
    print(f.read(5))
    f.seek(4)# 默认模式为0,以开头为参照物,开始计算4个字节,不是字符
    print(f.read())
    
 with open('a.txt','rb') as f:
    print(f.read(4).decode('utf-8'))
    #打完前四个光标移动4位,开始打剩下的内容
    f.seek(4,1) # 模式为1,目前是以当前光标开始计算4个字节,目前utf-8字符是1个字节,汉字是3个字节
    print(f.read().decode('utf-8'))
    
  with open('a.txt','rb') as f:
    print(f.read(4).decode('utf-8'))
    f.seek(-10,2) #2模式是以文件末尾为参照物,向左打印,
    print(f.read().decode('utf-8'))

实现实时更新日志的最后一条日志

#效率不是很高,从磁盘读取内容,很慢
#实现动态查看最后一条日志
#首先打开文件
with open('a.txt','r') as f: #这里用的r模式是因为本来就是在文本读,可以直接用r模式
    f.seek(0,2)
    while True:
        line=f.readline()
        if len(line) == 0:
            time.sleep(1) #休眠
        else:
            print(line,end='')

文件内容的修改

1.硬盘中的数据是不允许直接修改的
2.内存中的数据是可以直接修改
读写内容的扩展
r+
w+
a+
with open('a.txt','r',encoding='utf-8') as f:
    data=f.read()
with open('a.txt','w',encoding='utf-8') as w1:
    w1.write(data.replace('wang','geng'))#以字符串的形式更改
    

函数简介

#函数就是许多语法的集合,相当于一个集装箱,里面什么都可以装,甚至可以装自己
当代码冗余比较高的时候,可以考虑用函数把冗余度比较高的代码写成函数体,到时候直接调用就可以
#函数的语法结构
def 函数名(形参列表):
    函数体
    ...
    return 语句
1.def就是定义函数的关键字,它不能够省略,必须写
2.函数名就是将来要调用的对象,相当于变量名,必须要写
3.形参是可选的
4.'''函数注释
	注释不参与函数的执行,起到函数功能的提示作用
    可有可无'''
5.函数体才是函数的核心,它是函数所具备的核心功能,必须有
6.返回值,return语句,可以有返回值,也可以没有

函数的定义

#函数必须先定义后使用
函数在定义阶段,只检查语法是否错误,不检查逻辑是否有问题
逻辑上的错误只在调用阶段检测
函数一定是被调用之后才会执行函数内部的代码块,不调用一定不会执行
#函数调用
  函数名(参数)
  eg:
		def add(x,y):
    return print(x+y) #返回值

	add(1,2) #调用函数

#函数调用的内部原理
1.现在内存空间中申请一块空间地址来存储函数体代码
2.把函数名和函数体所在的空间地址绑定在一起
3.以后只需要通过函数名()来访问函数体代码即可

函数的分类

1.内置函数
	#python内部自己编写的函数,我们直接用即可
2.自定义函数
	#自己定义的函数,必须先定义后使用
    

posted @   家购诗  阅读(10)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示