3.15学习笔记

文件内的光标移动

# 1.前情提要
with open(r'a.txt','r',encoding='utf8') as f:
    print(f.read(3))
# read在文本模式下 括号内的数字表示的是读取指定的字符个数

with open(r'a.txt', 'rb') as f:
    print(f.read(9).decode('utf8'))
# read在二进制模式下 括号内的数字表示的是读取指定的字节数
# 2.具体控制
 seek方法可以控制光标的移动 在文本模式下移动的单位也是字节数
    seek(offset,whence)
        offset:控制移动的字节数
        whence:控制模式
            0:相对于文件开头(让光标先移动到文件开头)
                支持文本模式和二进制模式
            1:相对于当前位置(让光标先停留在当前位置)
                只支持二进制模式
            2:相对于文件结尾(让光标先移动到文件末尾)
                只支持二进制模式
 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'))

文件的修改

 with open(r'b.txt', 'r+t', encoding='utf-8') as f:
     f.seek(9)  # 不写模式 默认是0模式  基于文件开头 并且兼容文本和二进制
     f.write('<嘀嘀嘀>')
"""
文件数据在硬盘上其实是刻死 不可能从中间再添加新的内容
只能将老内容移除 刻新的
"""
 实现思路:将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件
# 优点: 在文件修改过程中同一份数据只有一份
# 缺点: 会过多地占用内存
 with open('b.txt', mode='r', encoding='utf-8') as f:
     data = f.read()
 with open('b.txt', mode='w', encoding='utf-8') as f:
     f.write(data.replace('张三','李四'))

 实现思路:以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,
 删掉原文件,将临时文件重命名原文件名(狸猫换太子)
# 优点: 不会占用过多的内存
# 缺点: 在文件修改过程中同一份数据存了两份
import os  # 模块(后面会学)

with open('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')  # 重命名文件

函数

# 什么是函数
	函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
	函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

定义规则

1.函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
2.任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
3.函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
4.函数内容以冒号起始,并且缩进。
5.return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

python具体代码结构

            def 函数名(参数1,参数2):
                '''函数的注释'''
                函数体代码
                return 返回值
1.def	
	是定义函数的关键字
2.函数名
	函数名类似于是变量名 指代函数体代码 命名与变量名一致
3.括号
	定义函数的时候 函数名后面肯定要先写括号
4.参数
	类似于使用函数的时候 给函数内部传递的数据 可以不写 或者单个、多个
5.冒号
	定义函数也需要有缩进的代码块
6.函数的注释
	用于解释函数的主要功能、使用方法等说明性文字
7.函数体代码
	函数的核心功能 也是我们将来编写的核心
8.return
	后面跟什么 那么执行完函数之后就会返回什么
posted @   槐序八  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示