今日内容详细
- 文件操作补充
- 函数
今日内容详细
文件操作补充
- flush() # 将内存中的数据立刻刷到硬盘,相当于ctrl+s
- readable() writeable() # 判断文件是否可读可写
with open(r'userinfo.txt','a',encoding='utf8') as f: print(f.readable()) # True print(f.writable()) # False
- writelines() # 括号内放列表,多个元素都会被依次写入
- f.read() # 读取所有内容,执行完该操作后,文件指针会移动到文件末尾
- f.readline() # 读取一行内容,光标移动到第二行首部
- f.readlines() # 读取每一行内容,存放于列表中
光标移动
可以使用seek(offset,whence)来控制光标的移动,其中的参数有两个:
- offset:用来控制移动的位数
-
whence:是操作模式
0:既可以用在文本模式也可以用在二进制模式,光标位置在文件开头
1:只可以在二进制模式下使用,光标位置在当前位置
2:只可以在二进制模式下使用,光标位置在文件末尾
with open(r'a.txt', 'r', encoding='utf8') as f: data = f.read() print(data) f.seek(1, 0) print(f.read())
with open(r'a.txt', 'rb') as f: data = f.read(15) print(data.decode('utf8')) f.seek(-12, 2) print(f.read().decode('utf8'))
文件修改
基本方法
with open(r'a.txt', 'r', encoding='utf8') as f: # 读取数据 data = f.read() print(data) with open(r'a.txt', 'w', encoding='utf8') as f: # 写入时替换 f.write(data.replace('hello world', 'hzh')) with open(r'a.txt', 'r', encoding='utf8') as f: data = f.read() print(data)
进阶方法
创建一个新文件,将老文件内容写入新文件,过程中完成修改,之后将老文件删除,将新文件命名成老文件,从而达到修改的效果
import os with open(r'a.txt', 'r', encoding='utf8') as f, open(r'a.txt.backend', 'w', encoding='utf8') as f1: for line in f: f1.write(line.replace('tony', 'jason')) os.remove(r'a.txt') os.rename(r'a.txt.backend', r'a.txt')
函数
函数就相当于是工具,提前定义好后续可以反复使用,避免了代码冗余的情况
语法结构
def 函数名(参数1,参数2): '''函数的注释''' 函数体代码 return 函数的返回值
- def:定义函数的关键字
- 函数名:函数名的命名与变量名保持一致 见名知意
- 参数:函数在使用之前还可以接收外部传入的参数
- 函数的注释:类似于产品说明书
- 函数体代码:整个函数主要功能逻辑,是整个函数的核心
- return:执行完函数之后可以给调用者一个反馈结果
ps:函数的使用一定要先定义后使用