1.练习
### 读取源文件,写入到目标文件
# 1.先定义一个源文件路径
source_file_path = 'a.txt'
# 2. 定义一个目标文件的路径
target_file_path = 'b.txt'
# 3. 读取源文件,写入到目标文件
with open(r'%s' % source_file_path, 'r', encoding='utf-8') as f1:
with open(r'%s'% target_file_path, 'w', encoding='utf-8') as f2:
# 4. 读取源文件,
for line in f1:
f2.write(line)
2.文件二进制读操作
with open('a.txt', 'rb') as f:
print(f.read(3).decode('utf-8'))
"""
1. r模式
read()里面的数字代表的是一个字符
2. b模式
read()里面的数字代表的是一个字节
"""
3.文件的移动指针(了解)
f.seek(offset, whence)总共有3种模式
1. offset参数
偏移量,移动的位置
如果是整数,从左往右读取
如果是负数,从右往左读取
2. whence参数
# 0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
# 1: 该模式代表指针移动的字节数是以当前所在的位置为参照的
# 2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
4.文件的修改(了解)
方式一:
1. 读取b.txt文件数据
with open('b.txt', 'r', encoding='utf-8') as f:
data = f.read()
print(data) # kevin kevin kevin kevin say hello world
new_data = data.replace('kevin', 'jack')
2. 把新的数据再次写入文件
with open('b.txt', 'w', encoding='utf-8') as f1:
f1.write(new_data)
方式二:
import os
with open('a.txt','rt',encoding='utf-8') as read_f:
with open('b.txt',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('b.txt','a.txt')
5.函数铺垫
"""
1. 我们现在写的代码冗余性比较强
2. 我们现在写的代码兼容性不强
3. 模仿len的功能实现原理
4. 我们自己写的这个函数没有返回值(就是函数执行之后,没有返回结果)
函数简介:
类似于工具,提前准备好,方便后续使用
"""
6.函数的语法结构
def my_len(参数1, 参数2):
'''求列表的长度'''
print(123) # 函数体代码
return 'hello' # 返回值
**********************************
1. def 定义或者说声明一个函数,不能省略
2. ()函数名(不能省略)
就相当于是变量名,命名遵循变量的命名规范,见名知意
3. 参数(可有可无)
函数的精髓
什么是函数:在使用函数之前要满足的一定条件
4. 函数体代码注释(可有可无,推荐有)
主要写一些函数功能的介绍,和一些参数的解释
5. 函数体代码(核心)
6. 返回值(可有可无)
return
**********************************
7.函数的定义与调用(核心)
#####################必须掌握###########################################
1. 函数必须先定义,后调用
2. 函数在定义阶段,如果有参数,调用阶段也需要给对应的参数
3. 函数在定义阶段只检测语法是否正确,不执行具体的代码功能
4. 函数在调用阶段会执行具体的函数体代码
5. 如何调用函数?# 函数名()
#####################必须掌握###########################################
函数的底层原理:
1. 申请一块内存空间,存储函数体代码
2. 把函数体代码绑定给函数名
3. 通过调用函数(函数名())来执行函数体代码
8.函数的分类
1. 内置函数
# 在python解释器中提前存在的,我们可以直接使用
eg:len, print,之前学习的数据类型的内置方法都是内置函数
2. 自定义函数
# 我们自己写的函数
2.1. 无参函数:没有参数的函数
# def my_len():
# print(123)
# my_len()
2.2. 有参函数:带参数的函数
def my_len(a,b):
print('hello')
print(a,b)
# my_len(1,2)
my_len('a','b')
2.3. 空函数:啥都没有
def my_func():
# 1. 注册
pass
...
def login():
# 登录功能
pass
9.函数的返回值(重要)
def my_func1():
print('helloworld')
# return 123, 345, 567 # (123, 345, 567)
# return [1, 2, 3]
# return {'username':'kevin','age':20}
return '123'
res = my_func1() # 把函数的执行结果赋值给res变量,结果就是None
print(res) # None
# 1. 当函数没有返回值的时候,没有return的时候,返回的是None
# 2. 当函数中只要return关键字的时候,返回的结果仍然是None
# 3. 当return后有数据的时候,写什么就返回什么
# 4. 当return后面跟多个数据的时候,会组织成元组形式返回
# 5. 如果你想返回多个值得时候,最后使用容器类型包一下
# 6. 在函数中,只要遇到return关键字,代码立刻终止执行,一个函数最多只有有一个return关键字
# 7. return 只能出现在函数中。if else中绝对不能出现