Python学习day11——文件处理、函数前戏

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中绝对不能出现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值