文件光标移动 | 数据修改和函数
内容概要
- 文件内光标的移动
- 文件内数据的修改
- 函数
二进制模式读写操作
-
with open(r'a.txt', 'rb') as f2:
print(f2.read(3).decode('utf8'))
-
with open(r'a.txt', 'r', encoding='utf8') as f1:
print(f1.read(4))
read() 括号内可以放数字
在t模式下表示字符个数
在b模式下表示字节个数
英文字符统一使用一个bytes表示
中文字符统一使用三个bytes表示
文件内光标的使用
- with open(r'a.txt', 'rb') as f2:
print(f2.read(3).decode('utf8'))
print(f2.tell())
f2.seek(3, 0)
print(f2.read().decode('utf8'))
控制文件内光标移动 f.swwk()
f.seek(offset, whence)
offset表示位移量
始终以字节为最小单位
整数从左往右移动
负数从右往左移动
whence表示模式
0:以文件开头为参考(支持tb两种模式)
1:只支持b模式,以当前位置为参考
2:只支持b模式,以文件末尾为参考
文件内容的修改
-
方式一 覆盖
with open(r'a.txt', 'r', encoding='utf8') as s:
a = s.read()
print(type(a))
with open(r'a.txt', 'w', encoding='utf8') as s1:
q = a.replace('村头一枝花', '举头望明月')
s1.write(q)
-
方式二 新建
import oswith open(r'a.txt', 'r', encoding='utf8') as read_f,
open(r'c2.txt', 'w', encoding='utf8') as write_w:
for i in read_f:
write_w.write(i.replace('举头望明月', '锄禾日当午'))
os.remove('a.txt')
os.rename('c2.txt', 'a.txt')
函数
-
函数语法结构
def 函数名(参数一,参数二):
函数注释
函数体代码
return 返回值 -
1.def(必须有)
定义函数的关键字
2.函数名(必须有)
函数的名字,相当于变量名
函数名的命名规范和风格遵循变量名的
3.参数一,参数二(可选)
参数有也可以有多个
表示在使用前满足函数的一些条件
4.函数注释(可选)
介绍函数功能,参数使用和其他情况
5.函数体代码(必须要)
函数核心的代码逻辑
6.return返回值(可选)
使用函数之后反馈给使用者的结果,可有可无
函数的定义与调用
-
1.函数必须先定义再调用(顺序不能乱)
2.函数在定义阶段只检测语法不执行代码
3.函数在调用阶段才会执行函数体代码
如何调用函数:
函数名加括号,如果函数在定义阶段有参数则在调用阶段也需要给参数函数在定义与调用阶段底层原理:
1.在内存空间中申请一块空间存储函数体代码
2.将函数体代码所存在的空间地址绑定给函数名
3.函数名加括号则会执行函数体代码
函数的分类
-
1.内置函数
python解释器自带的(提前定义好了,可以直接使用)2.自定义函数
程序员自己写的
(1)无参函数
(2)有参函数
(3)空函数无参函数:在函数定义阶段括号内没有写参数(变量名)
def s():
print('嘿嘿嘿')s()
有参函数:在函数定义阶段括号内写了参数(变量名)
def s(a, b):
print('哈哈哈')s(5,6)
空函数:函数体代码为空(pass,...)
虽然空函数本身没有意义,但可以提前规划好编码的思路
def name():
passdef password():
passdef age():
pass