学习日记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)
    
posted @ 2021-06-09 18:36  小白白柏柏  阅读(24)  评论(0)    收藏  举报