python笔记day13-文件、函数
f.seek的应用案例
模拟tail -f 检测文件追加内容
#追加
with open('access.log','at',encoding='utf-8') as f:
f.write('202011111111111 xxx xxx 100w')
import time
with open('access.log',mode='rb') as f:
#将指针跳到文件末尾 f.read()耗内存
f.seek(0,2)
while True:
line=f.readline()
if len(line)==0:
time.sleep(0.3)
else:
print(line.decode('utf-8'))
文件修改的两种方式
#张三 山东 179 80在某个词后面添加,直接写会覆盖
#硬盘中只有覆盖
#文本编辑器修改内存后全部覆盖给硬盘 修改断电数据丢失
#方式一 全部读入内存修改后存入硬盘-文本编辑工具多是此方法
#省硬盘空间 耗内存空间
with open('access.log','rt',encoding='utf-8') as f:
res=f.read()
data=res.replace('xxx','egen')
print(data)
with open('access.log','wt',encoding='utf-8') as f1:
f1.write(data)
202011111111111 egen egen 100w202011111111111 egen egen 100w
#方式二:按行读入 写入新文件并替换
#耗费硬盘空间 节省内存空间
import os
with open('access.log','rt',encoding='utf-8') as f,\
open('.access.log.swap','wt',encoding='utf-8') as f1:
for line in f:
f1.write(line.replace('xxx','egen'))
os.remove('access.log')
os.rename('.access.log.swap','access.log')
函数
定义
- 无参函数
- 有参函数
- 空函数
先定义 后调用
定义函数
->申请内存空间保存函数代码
->将内存地址绑定函数名
->定义时内容不会报错,只有在调用时会报错(不会运行函数体 但是会检验函数体的语法格式)
调用函数
->通过函数名找到函数内存地址
->加()触发函数体代码执行
# #先定义
# def func_name(param1,param2):
# 函数体
# return 值
#形式一 无参函数
def func():
print('哈哈哈')
print(func)
func()
#应用场景:接收用户信息并 格式化打印
def interactive():
name=input('name')
pwd=input('pwd')
print('名字:{},年龄:{}'.format(name,pwd))
#定义顺序不影响 调用顺序影响
def foo():
bar()
print('from foo')
def bar():
print('from bar')
foo()
<function func at 0x000001ED80051E40>
哈哈哈
from bar
from foo
#形式二 有参函数
def func(x,y):
print(x,y)
func(1,'aaa')
#应用场景求和
def add(x,y):
res=x+y
return res
print(add(20,20))
#形式三 空函数 ,函数体代码为pass
def func(x,y):
pass
#应用场景 构思代码
1 aaa
40
调用
def add(x,y):
res=x+y
return res
#1.语句形式-只调用不操作
add(1,2)
#2.表达式形式
#赋值表达式
res=add(1,2)
#数学表达式
print(add(1,2)*10)
#函数调用当参数
print(add(add(1,2),3))
30
6
函数返回值
## 函数返回值
def func():
return
res=func()#啥也不返回 none 函数体内没有return或者return后为空 = return None
print(res)
#返回1个值
def func(x,y):
print('1111111')
res=x+y
return(res)#return后函数终止-是函数结束的标志
print('22222222')
print(func(1,2))
#返回多个值 元组类型
def func():
return 10,'aa',[1,23]
res=func()
print(res,type(res))
None
1111111
3
(10, 'aa', [1, 23]) <class 'tuple'>