邵邵。

导航

函数定义

img

二进制模式读写

with open(r'a.txt','rb') as f:
     print(f.read())  # 读出来的为整个文件内的二进制数据
     print(f.read(6).decode('utf8'))  # read()括号内的为bytes个数,英文是1个byes字节,一个汉字是3个bytes字节,因为操作的是b模式,所以读取要解码,'utf8'
"""
read()  括号内可以放数字
    在t模式下表示字符个数
    在b模式下表示字节个数
英文字符统一使用一个bytes来表示
中文字符统一使用三个bytes来表示
"""

with open(r'a.txt','r',encoding='utf8') as f:
     print(f.read())  # 读取出来的为整个文件
     print(f.read(4))  # read内的数字是几就取出几个字符

文件内光标的移动.tell(),.seek()

with open(r'a.txt','rb') as f:
    print(f.tell())  # 表示查看目前光标移动个多少个字节b模式
with open(r'a.txt','r',encoding='utf8') as f:
    print(f.tell())  # 表示产看目前光标移动了多少个字符

'''
.tell()  # 目前光标移动了多少字节或者字符
.seek()  # 控制文件内字符移动
f.seek(offset,whence)
    offset表示位移量
        始终是以字节为最小单位
            正数从左往右移动
            负数从右往左移动
    whence表示模式
        0:以文件开头为参考系(支持tb两种模式)
        1:只支持b模式 以当前位置为参考系
        2:只支持b模式 以文件末尾为参考系
'''
with open(r'a.txt', 'rb') as f:
    f.seek(3, 1)  # 3,从左往右移动3个字节。1,以当前位置为参考单文

文件内容修改

1.覆盖:在原文件路径先r读取出来,在以w写进去
	优点:不占用硬盘空间
	缺点:一次性出去文件,如果文件大有可能内存溢出
	with open(r'a.txt','r',encoding='utf8') as f:
	data = f.read()  #读取出文件,命名
	with open(r'b.txt','w',encoding='utf8') as f1:
		#将读取出来的文件替换掉其中内容,在命名
 		new_data = data.replace('xxx','yyy')
		#将替换完成的文件重新写入
 		f1.write(new_data)
2.新建:将原文件内容取出找到替换的内容在替换掉,然后写入新的文件,之后删除原文件,并命名原文件
	优点:内存空间占用少
	缺点:会在硬盘创建两个相同的文件,占用硬盘空间,但这是短暂的
	# os 是模块
	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:  #for循环要读取的文件,一行一行的读取内容
			write_f.write(line.replace('SB', 'kevin'))  # 将for循环的文件一行一行的写入新的文件,找到目标文件后替换
os.remove('c.txt')  # 删除原文件
os.rename('c.txt.swap', 'c.txt')  # 重命名文件

img

函数

1.函数的语法结构

def 函数名(参数1,参数2):
	'''函数注释'''
	函数代码题
	return返回值
1.def(必须要有)
	定义函数的关键字
2.函数名(必须要有)
	是函数的名字,相当于变量名
	函数名的命名规范与风格遵循变量名
3.参数1,参数2(可选)
	参数可以没有也可以有多个
4.函数注释(可选)
	类似于产品说明书
	主要用于介绍函数功能,使用参数,及其他情况
5.函数体代码(必须要有)
	函数核心的代码逻辑#(重要)
6.return返回值(可选)
	使用函数之后反馈给使用者的结果,可以有也可以没有

函数的定义与调用

1.定义,调用
	1.函数必须先定义后后使用(顺序不能乱)
	2.函数在定义阶段只检测语法,不执行代码
	3.函数在调用阶段才会执行函数体代码
		# 如何调用代码
			# 函数名加括号,如果函数在定义阶段有参数则在调用阶段也需要给参数
2.定义调用阶段底层原理
	1.在内存空间中申请一块空间储蓄函数体代码
	2.将函数体代码所造的空间地址绑定给函数名
	3.函数名加括号则会执行函数体代码

函数的分类

1.内置函数
	python解释器自带
2.自定义函数
	程序员自己写的函数
	1.有参函数
		在函数定义阶段括号内写了参数
	2.无参函数
		在函数定义阶段括号内欸有写参数
	3.空函数
		函数体代码为空(pass)  #空函数没有含义,单可以提前规划好写代码思路

img

posted on 2021-11-12 15:46  邵邵。  阅读(95)  评论(0)    收藏  举报