一、可读可写模式:r+t w+t a+t(为原来的模式增加原本没有的功能,如r+t模式为可读可写模式)
二、文件内的指针移动
seek关键字:1.第一个参数(offset)代表字节数
2.第二个参数(whence)代表指针位置:0代表文件开头,1代表指针当前位置,2代表文件末尾
三、文件修改的两种方式:
1.(1)将文件内容由硬盘全部读入内存
(2)将内存中完成修改
(3)将内存中修改后的结果覆盖写回到硬盘
with open('a.txt',mode='rt',encoding='utf-8') as f:
a=f.read()
with open('a.txt',mode='wt',encoding='utf-8') as f:
f.write(a.replace('alex','dsb'))
优点:文件修改的过程中只有一份数据
缺点:占用内存过多,不适合大文件
2.(1)以读的方式打开源文件,以写的方式打开一个临时文件
(2)从源文件中每读一样内容修改完毕后写入临时文件,直到源文件读取完毕
(3)删掉源文件,将临时文件重命名为源文件名
import os
with open('a.txt',mode='rt',encoding='utf-8') as f_read,open('.a.txt.swap',mode='wt',encoding='utf-8') as f_write:
for line in f_read:
f_write.write(line.replace('alex','dsb'))
os.remove('a.txt')
os.rename('.a.txt.swap')
优点:同一时刻在内存中只存在源文件的一行内容,不会过多的占用内存
缺点:在文件修改的过程中会出现源文件与临时文件共存,硬盘上同一时刻会有两份数据,即在修改的过程中会过多的占用硬盘
四、函数
定义:函数就是具备某一功能的工具
原因:1.程序的组织结构不清晰,可读性差 2.代码冗余 3.可扩展性差
用法:遵循的原则:先定义,后调用
def 函数名(参数):
代码块
return 返回值
函数:就相当于一个变量名,指向函数的内存地址 注意:函数的内存地址()就可以触发函数体代码的执行
参数:参数是函数的调用者为函数体代码传值的媒介,在python中函数的参数无需声明类型
代码块:就是函数体功能的具体实现
return返回值:函数体代码运行的结果
两个阶段:定义阶段:只检测语法,不执行代码 调用阶段:运行函数体代码
无参函数定义:当函数体代码逻辑不依赖任何人传入的值就能执行,就不需要定义参数
有参函数定义:当函数体代码逻辑依赖外部传入值时,必须定义参数用来接收外部传入的值