Day10课后有感
-
-
文件数据修改(了解)
-
函数简介
-
函数的语法结构
-
函数的返回值
1.前期铺垫 with open(r'a.txt','r',encoding='utf8') as f: print(f.read()) # 光标直接读到末尾 print(f.read(3)) # 光标向后读取三个字符 read在文本模式下 括号内的数字表示的是读取指定的字符个数 空格也算一个字符 with open(r'a.txt', 'rb') as f: print(f.read(9).decode('utf8')) print(f.read(1).decode('utf8')) read在二进制模式下 括号内的数字表示的是读取指定的字节数 unicode所有的字符都是用2bytes来起步表示 utf8中文用3bytes来表示 # 读取中文必须3个字节一读,不然就会报错 英文用1bytes来表示 往后unicode可以不做研究 只研究utf8、gbk等编码即可 2.控制光标的移动 seek方法可以控制光标的移动 在文本模式下移动的单位也是字节数 seek(offset,whence) # offset意思是偏移量 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('access.log', mode='rb') as f: f.seek(0, 2) while True: line = f.readline() if len(line) == 0: # 没有内容 pass else: print(line.decode('utf-8'), end='')
"""
硬盘上的数据有两个状态: 占有态与自由态
占有态意思是已经有数据被刻录在这块范围
自由态意思是如果我们要删数据,那个这个数据的位置我们标记成自由态 之后如果有新的数据进来了并且落到了自由态位置那么直接覆盖,由于是覆盖不是真正意义上的删除,所以数据有一定条件可以恢复
"""
文件数据在硬盘上其实是刻死的,如果要修改数据,只能删除原有数据
1.在原来的位置重新写并替换。
2.在其他地方写数据,并删掉之前要修改的数据,不可能从中间再添加新的内容。
操作方法:
# 实现思路:将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件
# 优点: 在文件修改过程中同一份数据只有一份
# 缺点: 会过多地占用内存
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('张一蛋', 'jason'))
函数简介
函数的概念
比如一个修理工会事先准备好需要用到的工具,这次用完后,下次遇到相同的问题,就可以拿出工具直接修理。
在程序中,对应的的‘工具’指的就是函数,‘事先准备工具’的过程即函数的定义,‘拿来就用’即函数的调用。
函数与循环的区别
循环:只能在一个地方反复执行相同的代码 函数:可以在多处位置反复执行相同的代码
函数的语法结构
def 函数名(参数1,参数2): '''函数的注释''' 函数体代码 return 返回值 1.def 是定义函数的关键字 2.函数名 函数名类似于是变量名 指代函数体代码 命名与变量名一致 3.括号 定义函数的时候 函数名后面肯定要先写括号 4.参数 类似于使用函数的时候 给函数内部传递的数据 可以不写 或者单个、多个 5.冒号 定义函数也需要有缩进的代码块 6.函数的注释 用于解释函数的主要功能、使用方法等说明性文字 7.函数体代码 函数的核心功能 也是我们将来编写的核心 8.return 后面跟什么 那么执行完函数之后就会返回什么 """ 定义函数需要使用def关键字 定义函数的过程不会执行函数体代码 只会检测语法 def index(): xsadasd 定义的时候不会报错 def index1(): if 语法错误定义的时候就会报错 调用函数需要使用函数名加括号 """
作业
1.反复练习注册、登录功能代码编写 2.尝试着使用函数写注册登录(不写也没事) 3.整理今日内容及博客、录音 4.提前预习