1.文件的操作
1.1二进制模式下的读写操作
with open('a.txt', 'r', encoding='utf-8') as f:
print(f.read(5))
with open('a.txt', 'rb') as f:
print(f.read().decode('utf-8')) # b'helloworld'
print(f.read(7).decode('utf-8')) # b'helloworld'
t模式下:
f.read()如果不指定参数,默认状态下就是读取全部数据,如果设置了参数那么参数就是返回字符 的个数。
b模式下:
f.read()如果设置了参数就是字节的个数,且三个字节等于一个中文。
1.2控制文件内的指针的移动
f.seek()
offset: int
代表的是偏移的量,如果是正数就是向右偏移,如果是负数就是向左边偏移。(且左边要可移动,要不然会报错)
1.2.1模式的控制
whence: int = 0
0:默认模式,指针的参照物永远是文件的开头:它可以使用,t和b。
1:该模式表示的指针移动的字节数是以当前光标的位置作为产造物,只能在b中使用。
2:该模式的参照物是文件的末尾。
1.3文件的修改
1.3.1定义
mode='r+'#可读可写
mode='w+t'#可读可写
mode='a+t'#可读可写
硬盘中得数据是不允许直接修改的,内存中的数据是可以直接修改的。
方式一:
with open('a.txt', 'r', encoding='utf-8') as f:
data = f.read()
print(data)
先是把文件中内容读取出来然后再进行数据覆盖
方式二:
with open('a.txt', 'wt', encoding='utf-8') as f:
f.write(data.replace('kevin', 'kevinSB'))
做字符的替换
import os
with open('a.txt',mode='rt',encoding='utf-8') as read_f, \
open('.a.txt.swap',mode='wt',encoding='utf-8') as wrife_f:
for line in read_f:
wrife_f.write(line.replace('SB','kevin'))
os.remove('a.txt')
os.rename('.a.txt.swap','a.txt')
是将文件中全部的数据提出来然后做修改将老文件夹直接删除然后创建一个新的文件夹将数据导入然后再将新文件夹命名成老文件夹名称。
2.函数
2.1函数的简介
目前我们学习的代码写法比较繁琐,函数则可以让我们的方法进行简化。函数就类似于一个工具箱每个工具都被赋予了意义,哪里需要就可以直接使用
2.2函数的语法结构
def my_len(a, b):
'''函数注释'''
# 函数体
return '123'
1.def是用来定义函数的关键词不能省略。
2.my_len():是函数的名称命名的方式和变量是一样的,也是必须存在的不能省略
3.函数的注释,是告诉我们这个函数有什么用的建议使用,但是不是必须
4.函数体,是函数的核心是赋予函数意义的,没有函数体的函数是没有意义的一般情况下都是有函数体的
5.return函数的返回值,是可以选择的。一个函数只能有一个返回值
2.3函数的定义与调用
2.3.1函数的定义
1.函数必须先定义才能被调用,没有被定义的函数是一定不能被调用的。
2.函数在定义阶段只能检测语法错误,不能检测逻辑性错误。
3.逻辑性错误只会在调用阶段被检测出来。
4.函数一定是被调用之后才会执行函数内部的代码块,不调用函数一定不会执行函数的。
2.3.2如何调用函数
函数调用的内部原理:
1.现在储存空间制造存放函数体的内存地点
2.把函数名指向函数体所在的位置
3.然后再用函数名来访问函数体
调用函数:
函数名()
如果在定义阶段加有参数那么使用时一定要连参数一块写上
2.4函数的分类
2.4.1内置函数
在Python中一直存在的无需定义可以直接使用。
2.4.2自定义函数
我们自己写的参数必须要赋予其意义再使用
1.无参数函数:函数在定义阶段没有函数。
def my_len():
pass
my_len()
2.有参数函数:在定义阶段有参数的存在
def my_len(a,b):
pass
my_len(1,5)
3.空函数:主要作用帮我们梳理业务逻辑
def my_len():
passs