一:文件的读写操作方法
即w+,r+,a+,即可让文件具有除了本身之外的一些功能
with open('a.txt',mode='r+t',encoding='utf-8') as f:
print(f.read())
print(f.writable())
print(f.readable())
f.write("chishiba")
二:文件操作的其他方法
读操作
readline
readlines
with open('a.txt',mode='rt',encoding='utf-8') as f:
line1=f.readline()
print(line1)
line2 = f.readline()
print(line2)
for line in f:
print(line)
lines=f.readlines()
print(lines)
写操作
with open('a.txt',mode='wt',encoding='utf-8') as f:
f.write("1111\n222\n333\n")
for x in "hello":
f.write(x)
f.writelines("hello") # f.write("hello")
f.writelines(["1111","222","333"])
f.flush()
print(f.name)
print(f.encoding)
三:文件指针移动
前提:文件内的指针移动,除了t模式下的read(n)中n代表的是字符个数,其余的指针移动都是以bytes为单位的
(其中英文字母占1个bytes,中文字符占3个bytes)
with open('a.txt',mode="rt",encoding="utf-8") as f:
res=f.read(6)
print(res)
2.with open(‘a.txt’,mode=‘rb’) as f:
res=f.read(10)
print(res)
print(res.decode(‘utf-8’))
3.切断
with open(‘a.txt’,mode=‘r+t’,encoding=‘utf-8’) as f:
f.truncate(10)
f.seek(移动的字节个数,模式)
三种模式
0:参照文件开头移动指针
1:参照当前所在的位置移动指针
2:参照文件末尾位置移动指针
只有0模式可以在t下使用,其中1和2只能在b下使用
with open(‘a.txt’,mode=‘a+b’) as f:
f.seek(0,2)
print(f.tell())
with open(‘a.txt’,mode=‘a+b’) as f:
f.seek(-6,2)
print(f.read().decode(‘utf-8’))
print(f.read(3).decode('utf-8'))
四:文件修改
方式一:
1.以r模式打开源文件,将源文件内容全部读入内存
2,然后在内存中修改完毕
3.以w模式打开源文件,将修改后的内容写入源文件
优点:无须硬盘预留足够的空间
缺点:需要内存有足够的空间
with open(‘a.txt’,mode=‘rt’,encoding=“utf-8”) as src_f:
byd=src_f.read()
res=byd.replace(“歪歪”,“歪尼马呢”)
with open(“a.txt”,mode=“wt”,encoding=“utf-8”) as dst_f:
dst_f.write(res)
方式二:
1.以r模式打开源文件,然后以w模式打开一个临时文件
2.从源文件中读一行到内存中,修改完毕后直接写入临时文件,循环往复,直到操作完所有行
3.删除源文件,将临时文件名改为源文件名
优点:没有对内存造成过度占用
缺点:需要硬盘预留出足够的空间来放临时文件
import os
with open (“a.txt”,mode=“rt”,encoding=“utf-8”) as src_f,
open(’.a.txt.swap’,mode=‘wt’,encoding=“utf-8”) as dst_f:
for line in src_f:
dst_f.write(line.replace(“歪”,“我永迪”))
os.remove(‘a.txt’)
os.rename(’.a.txt.swap’,‘a.txt’)
五:函数
1.什么是函数
函数使用来盛放代码的容器
具备某一功能的工具------------》函数
事先准备好工具的过程------------》函数的定义
遇到应用场景,拿来就用--------------》函数的调用
2.为何要用函数
解决问题
1.可读性差
2.拓展性差
3.如何用函数
原则:先定义,后调用
(一)基本使用:
def say_hello():
print("----------")
print(“hello world”)
print("-------")
say_hello()
(二)函数的定义阶段与调用阶段发生的事情
函数定义阶段:只检测语法,不执行代码
函数调用阶段:执行函数体代码
(三)函数定义的完整语法
‘’’
def 函数名(参数1,参数2,参数3,…):
“”"
注释信息
“”"
代码1
代码2
代码3
return 返回值
‘’’
3.1函数定义的三种形式
无参函数
def f1():
print(“hello1”)
print(“hello2”) print(“hello3”)
f1()
有参函数
def f2(x,y): # x=111 y=222
print(x)
print(y)
f2(111,222)
空函数
def login():
pass
def transfer():
pass
:pass是占位符
3.2函数调用的三种形式
(1)语句形式
len(“hello”)
(2)表达式形式
res=len(“hello”) + 10
print(res)
(3)函数调用可以当做一个参数传给另外一个函数
print(add(5,5))
res=add(add(1,2),3)
print(res)
(四)函数的返回值------------》函数的产品
return 的作用1:控制返回值
(1)没有return---------》默认返回值是None
def func():
print(1111)
res=func()
print(res)
(2) return 值:返回就是那一个值
def max2(x,y):
if x > y:
return x
else:
return y
(3) return 值1,值2,值3: 返回的是一个元组
def func():
return [11,22],2,3
res=func()
print(res,type(res))
return的作用2: 函数内可以有多个return,但只要执行一个就会立即终止函数的运行,并且会将return后的值当做本次调用的产品返回
def func():
print(1111)
return 2222312313123123
print(2222)
return
print(3333)
res=func()
print(res)