Python文件的操作(三)
一.二进制模式的读写操作
1 # 二进制模式的读写操作 2 with open(r'a.txt', 'rb') as f: 3 print(f.read()) 4 print(f.read(6).decode('utf8')) 5 ''' 6 .read()括号内可以放数字 7 在t模式下表示字符个数 8 在b模式下表示字节个数 9 英文字符统一使用一个bytes来表示 10 中文字符统一使用三个bytes来表示 11 '''
二.文件内光标的移动
1 # 文件内光标的移动 2 ''' 3 控制文件内光标的移动,f.seek() 4 f.seek(offset,whence) 5 offset 表示偏移量 (始终是以字节为最小单位) 6 正数从左往右移动 7 负数从右往左移动 8 whence表示模式 9 0:以文件开头为参考系(支持tb两种模式) 10 1:只支持b模式 以当前位置为参考系 11 2:只支持b模式 以文件末尾为参考系 12 ''' 13 with open(r'a.txt', 'rb') as f: 14 print(f.read(4).decode('utf8')) 15 print(f.tell()) # 查看光标移动了多少个字节 16 f.seek(3, 0) 17 print(f.read().decode('utf8'))
三.文件的内容修改
# 方式1 覆盖 with open(r'a.txt', 'r', encoding='utf8') as f: date = f.read() print(type(date)) with open(r'a.txt', 'w', encoding='utf8') as f1: new_date = date.replace('tony', 'jason') f1.write(new_date) # 方式二 新建 import os with open('c.txt', mode='rt', encoding='utf-8') as read_f, \ open('c.txt.swap', mode='wt', encoding='utf-8') as write_f: for line in read_f: write_f.write(line.replace('SB', 'kevin')) os.remove('c.txt') # 删除原文件 os.rename('c.txt.swap', 'c.txt')
四.函数的引入
l = [11, 12, 33, 44, 55, 66, 77, 88] def my_len(): n = 0 for i in l: n += 1 print(n) my_len() ''' 1.我们现在所写的代码无法做到精简,需要用就必须重复写模仿冷的内部源码 2.我们现在所写的代码兼容性(无法解决) 3.我们现在所写的代码没有返回值 4.函数就类似于工具 提前定义好之后就可以反复使用 '''
五.函数的语法结构
# 函数语法结构 def 函数名(参数1,参数2): '''函数注释''' 函数体代码 return 返回值
1.def(必须的)
是定义函数的关键字
2 函数名(必须的)
是函数的名字 相当于变量名
函数名的命名规范与风格要遵循变量名的命名规则
3.参数1,参数2(可选的)
参数可以没有也可以有很多个,用来表示函数在使用前需要满足的一些条件
4.函数注释(可选的)
类似于产品说明书
主要用于介绍函数功能,使用参数,及其他情况。
5.函数体代码(必须写)
函数核心代码逻辑(重要)
6.return返回值(可选的)
使用函数之后反馈给使用者的结果,可以有也可以没有。
六.函数的定义与调用
1.函数必须先定义后调用,顺序一定不能乱
2.函数在定义阶段只检测语法不执行代码
3.函数在调用阶段才会执行函数体内的代码
如何调用函数
函数名后加括号 如果函数在定义阶段有参数则在调用阶段也需要给参数
原理剖析:1.在内存空间申请一块空间存储函数体代码
2.将函数体代码所在的空间地址绑定给函数名
3.函数名加括号则会执行函数体代码
七.函数的分类
1.内置函数
Python解释器自带
2.自定义函数
2.1 无参函数
在函数定义阶段括号内没有写参数(变量名)
2.2 有参函数
在函数定义阶段括号内写了参数(变量名)
2.3 空函数
函数体代码为空,一般用pass,或者...补全代码,并不具备某种特定含义。有时候会用来占位。
虽然空函数本身没有含义 但是空函数可以提前规定好编写代码的思路 """ def run(): pass def fight(): pass def talk(): pass