文件相关操作及函数相关部分内容
文件的基本操作
文件的基本操作分为三步骤:1.打开文件
2.操作文件
3.关闭文件
1. 打开文件
关键字: open
f = open(r'a.txt', 'r', encoding='utf8') # f = open(r'a.txt', 'r', encoding='utf-8') print(f) # 操作系统打开的文件
# 当encoding=‘utf8’ 报错时,就换成 encoding=‘utf-8’。
2. 操作文件: 读、写
res = f.read() print(res) # 关闭文件:释放资源 f.close # 方式2: # with上下文管理器 with open('a.txt', 'r' ,encoding='utf8') as f: print(f.read())
文件的读写模式
r:read(读)
w:write(写)
a:append(追加写)
# 读模式 # 1. 路径不存在,直接保存 with open('a.txt', 'r', encoding='utf8') as f: pass #2. 路径存在 with open('a.txt', 'r', encoding='utf8') as f: print(f.read()) # 写模式 # 1. 路径不存在,会自动创建出文件 with open('a.txt', 'w', encoding='utf8') as f: pass ''' 我们真正的代码以后是运行在Linux系统里面的 ''' # 2. 路径存在 # 把文件内的原本数据清除掉,重新写入,覆盖之前所有的数据 # w模式很危险 with open('a.txt', 'w', encoding='utf8') as f: f.write(str()) # 写文件的数据类型必须是字符串和字节类型,其他类型都不能直接写入
# 3. 追加模式 # 3.1 路径不存在,会自动创建文件出来 with open('a.txt', 'a', encoding='utf8') as f1: f1.write('hello baby!') pass # 3.2 路径存在,在文件的原来数据后面继续追加新的内容 with open('a.txt', 'a', encoding='utf8') as f1: f1.write('hello baby!\n')
文件的操作方法
1. 读系列
# 1.读系列 with open('a.txt', 'r', encoding='utf8') as f: print(f.read()) # 一次读取文件的一行内容,一行一行的读取 print(f.readline()) # hello worldhello baby!hello baby! print(f.readlines()) # ['hello world\n', 'hello baby!\n','hello baby!\n', 'hello baby!\n'] \n 换行符也算是字符 # 判断文件是否可读 print(f.readable())
2. 写系列
# 2.写系列 with open('a.txt', 'w', encoding='uft8') as f: f.write('helllo baby') f.write(str(123)) # 只能写字符串 print(f.writebale()) # True print(f.readable()) # False f.writelines(['hello\n, 'world\n', 'kevin' ,'jack'])
文件的读操作优化
with open('a.txt', 'r' ,encoding='uft8') as f: print(f.read()) # 一次性把文件中的内容读取完毕
变量f是支持for循环的
for line in f: print(line) # for循环就是一行一行的读取内容的
'''
所以,以后读文件的时候,如果觉得文件很大,我们就是for循环一行一行的读取
'''
文件操作模式
t模式:text文本
r >>>> rt
w >>>> wt
a >>>> at
'''
1. 它是以字符串为基本单位
2.只能操作字符串形式
3.encoding参数必须写
'''
b 模式: bytes二进制模式
r >>>> rb
w >>>> wb
a >>>> ab
'''
1.b 不能省略,必须写rb
2.可以操作任意的数据类型:视频、音频、图片等都可以
3. encoding参数一定不能写
4. 数据以字节为单位
'''
""" 1. 如果是t模式,read里面写的数字代表的是读取的字符个数 2. 如果是b模式,read里面写的数字代表的是读取的字节个数 3. 一个字节代表一个英文字符 4. 一个中文字符使用三个字节保存 """ # with open('a.txt', 'r', encoding='utf8') as f: # print(f.read(3)) # 你好啊 with open('a.txt', 'rb') as f: # 你 print(f.read(10).decode('utf8')) # 你好啊
文件内指针的移动
指针有三种模式:0、1、2.
f.seek(offset,whence) whence: # 0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的(支持tb模式) # 1: 该模式代表指针移动的字节数是以当前所在的位置为参照的(只用于字节模式) # 2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的(只用于字节模式)
with open('a.txt', 'rb') as f: f.seek(3,0) print(f.read()) f.seek(-3,1) # 负数代表的是往相反方向移动 f.seek(-3,2) # 负数代表的是往相反方向移动 print(f.tell()) # 7 查看光标现在移动的位置 print(f.read()) # loworld print(f.read()) # 读取内容为空
文件的修改
文件的修改:一次性读出文件内容再赋值给变量,通过调用变量量.replace文件的修改内置方法替换,在写入文件中。
with open('a.txt', 'r', encoding='utf8') as f: data = f.read() res = data.replace('kevin', 'tank') print(res) with open('a.txt', 'w', encoding='utf8') as f: f.write(res)
函数简介
1.为什么会有函数?
1.我们现在所写的代码都不够简洁,调用函数可以避免写重复的代码。
2.我们现在所写的代码兼容性不强。
2.函数的定义
函数就是类似于一个工具,就是先提前定义好一个功能,后面相使用,直接调用函数即可。
3.函数的语法结构
def index(a,b):
''' 函数注释 '''
print(123)
return
""" 1. def 定义函数的关键字(不能省略) 2. my_len 函数名,不能省略,必须写 函数名的命名遵循变量的命名 3. def my_len(参数1,参数2): 参数是可有可无的 参数就是在执行函数的时候要提前满足的条件 4. 函数注释 可有可无,一般情况函数注释是用来介绍函数的功能、参数代表的意思,以及返回值的情况等信息 5. 函数体 函数体也是可有可无的,但是,没有函数体的函数没有意义的,pass 6. 函数的返回值 关键字:return 返回值也是可有可无的,一个函数只能有一个return返回值 """
4.函数的定义与调用
1. 函数必须先定义在调用
2.函数在定义阶段只会检测语法错误,不执行函数体代码
3.只有在函数调用阶段,才会执行函数体代码
4.如何调用函数
函数名加括号,如果有参数,在调用的时候参数也要被传送过去
函数在定义阶段和调用阶段的底层原理:
1. 在内存空间中申请一块地址,来存储函数体代码
2.把函数体代码所在空间地址绑定给函数名
3.通过调用函数来执行函数体代码
5.函数的分类
1.内置函数:Python解释器自带的函数,可以直接拿来使用
2.自定义函数
2.1 无参函数
没有参数的函数:def index():
pass
2.2 有参函数
括号里有参数的函数就叫有参函数: def index(a,b):
print(a+b)
index(1,2)
2.3 空函数
空函数就是没有函数体的代码,可以帮我们梳理思路
def register(): pass def login(): pass def order(): pass def car_shopping(): pass def address(): pass
6.函数的返回值
'''
1. 函数内如果没有return关键字,则函数的返回结果就是None
2. 函数内如果只有return关键字,则函数的返回结果也还是None
3.函数内若有return关键字,return后面写什么就返回什么,谁调用,返回结果就给谁
4. 函数内遇到return关键字,程序就直接终止运行
5. 一个函数内只能有一个return结果
6. return后面也可以返回多个值,如果使用逗号隔开,那么就以元组的形式返回,也
能够直接返回列表、字典等类型
# 1.返回值为None def my_min(x,y): pass # 没有函数体代码 res = my_min(1,2) print(res) # None # 2.返回值为None def my_min(x,y): return res = my_min(1,2) print(res) # None #3.return 后面写啥就返回啥值 def my_min(x,y): return 1 res = my_min(1,2) print(res) # 1 # 4.可返回多个值,值之间用逗号隔开,以元组形式返回 def my_min(x,y): return 1,2,3,3 res = my_min(1,2) print(res) #(1, 2, 3, 3)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」