
二进制模式读写
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') # 重命名文件

函数
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) #空函数没有含义,单可以提前规划好写代码思路
