学习日记10
今日内容
-
控制文件指针移动
PS:只有0模式可以在t下使用,其中1,2只能在b模式下只用,但是无论是t,b移动的都是字节个数
f.seek移动的全都是字节个数 f.seek(字节个数,0)参照文件开头 f.seek(字节个数,1)参照当前指针 f.seek(字节个数,2)参照末尾 f.tell()告知指针位置相对于开头 tail -f 文件路径(时刻检测文件,发现有追加进来的内容) #记录日志 import time with open('access.log',mode='at',encoding='utf-8')as f: f.write('%s 张三 200.103.110.22 ok\n'% time.strftime("%Y-%m-%d %H:%M:%S"))
-
文件修改的两种方式
文件修改的原理
把硬盘数据读到内存,在内存修改完毕后,在覆盖回硬盘
具体来说又分为两种方案
# 方案一 缺点:费内存,把所有文件读到内存,原文件过大可能会爆内存 with open('test.txt',mode='rt',encoding='utf-8')as f: data=f.read() with open('test.txt',mode='wt',encoding='utf-8')as f: f.write(data.replace('egon','EGON')) # 方案二 缺点:要求硬盘预留足够的空间 # 一行一行的读代码 with open('test.txt',mode='rt',encoding='utf-8')as f1,open('.test.txt.swp',mode='wt',encoding='utf-8')as f2: for line in f1: f2.weite(line.replace('EGON','egon')) os.remove('test.txt') os.remove('.test.txt.swp','test.txt')
-
函数
定义函数
1、什么是函数
函数就是盛放功能的(一系列代码)的容器
定义函数就是造出了一个工具
事先准备工具的过程->函数的定义
遇到应用场景拿来就用->函数的调用‘
2、为何要用函数
不用函数写出代码的问题是:
1 程序的组织结构不清晰,可读性差,可维护性差
2 可扩展性差
3、如何使用函数
原则:
先定义
后调用
1 定义函数的语法:
def 函数名(参数1,参数2,参数3。。。):
代码一
代码二
代码三
return 值
2 申请内存空间,把函数代码放进去,然后把内存地址绑定给函数名
3 函数调用阶段发生的事情:执行函数体的代码
PS:函数定义阶段发生的事情:只检测语法不执行代码,只有在调用函数时才会执行函数体代码
调用函数
调用函数语法: # 函数名=函数的内存地址
res = 函数名(值1,值2,值3.。。)
函数的参数:形参和实参
函数的返回值
return返回值的语法
具体来说函数的返回值有三种形式
1 return值:返回的就是该值本身
2 return值1,值2,值3:返回的是小元组
3 没有return或者return无值或者return None:默认返回的是None
-
模块
1、什么是模块
模块是一系列功能的集合体
模块分为4类
模块有三种来源:
1 python自带的模块/库
内置模块
标准库
2 第三方的库
3 自定义库
2、为什么要用模块
1 拿来主义,提升开发效率
2 减少代码冗余
import 文件名 # 导入文件模块
缺点 需要前缀
from 文件名 import。。。
缺点 可能会重名冲突
-
常用模块
time模块
# 时间戳 print(time.time())参与时间运算 # 格式化的字符 print(time.strftime(%Y_%m_%d %H:%M:%S)) # 结构化的时间 obj = time.localtime() print(obj.tm_year) print(obj.tm_yday) print(obj) obj2 = time.gmtime() # utc时间 print(obj2)
random模块
impord random print(random.random())#(0,1)----float 大于0且小于1之间的小数 print(random.readint(1,3))#[1,3] 大于等于1且小于等于3之间的整数 print(random.readange(1,3))#[1,3) 大于等于1且小于3之间的整数 print(random.choice([1,'23',[4,5]]))#1或者23或者[4,5] print(random.sample([1,'23',[4,5]],2))#列表元素任意2个组合 print(random.uniform(1,3))#大于1小于3的小数 item=[1,3,5,7,9] 17 random.shuffle(item) #打乱item的顺序,相当于"洗牌" 18 print(item)