zoukankan      html  css  js  c++  java
  • Python学习笔记-Day23-模块(时间、随机数、sys、os)

    内容大纲

    一、时间模块

    二、随机数模块

    三、sys模块

    四、os模块

    一、时间模块

    时间的三种格式

      时间戳时间:timestamp = time.time()  ,0是伦敦时间1970/1/1 0:0:0,北京时间1790/1/1 8:0:0

      结构化时间:struct_time= time.localtime()

      格式化时间:format_time = time.strfrime(fmt)

    几种格式:

                %y 两位数的年份表示(00-99%Y 四位数的年份表示(000-9999%m 月份(01-12%d 月内中的一天(0-31%H 24小时制小时数(0-23%I 12小时制小时数(01-12%M 分钟数(00=59%S 秒(00-59%a 本地简化星期名称
                %A 本地完整星期名称
                %b 本地简化的月份名称
                %B 本地完整的月份名称
                %c 本地相应的日期表示和时间表示
                %j 年内的一天(001-366%p 本地A.M.或P.M.的等价符
                %U 一年中的星期数(00-53)星期天为星期的开始
                %w 星期(0-6),星期天为星期的开始
                %W 一年中的星期数(00-53)星期一为星期的开始
                %x 本地相应的日期表示
                %X 本地相应的时间表示
                %Z 当前时区的名称
                %% %号本身

    三种时间格式之间互相转化:

    时间戳时间----->结构化时间:struct_time=time.localtime(timestamp) 或 struct_time=time.gmtime(timestamp)转化成伦敦时间

    结构化时间----->格式化时间:format_time= time.strftime(fmt,struct_time)

    格式化时间----->结构化时间:struct_time= time.strptime(format_time,fmt)

    结构化时间----->时间戳时间:timestamp= time.mktime(struct_time)

    例题一:求两个时间的差

    import time
    def timediff(time1,time2):
        struct_time1 = time.strptime(time1,'%Y-%m-%d %H:%M:%S')
        stamp_time1 = time.mktime(struct_time1)
        struct_time2 = time.strptime(time2, '%Y-%m-%d %H:%M:%S')
        stamp_time2 = time.mktime(struct_time2)
        diff = abs(stamp_time1-stamp_time2)
        struct_time = time.gmtime(diff)
        return '%s年%s月%s天%s小时%s分钟%s秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_yday-1,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec)
    ret = timediff('2018-9-8 23:34:12','2018-9-7 22:33:11')
    print(ret)  # 0年0月1天1小时1分钟1秒

    例题二:计算本月1号的时间戳:

    import time
    def func():
        format_time = time.strftime('%Y-%m-1')
        struct_time = time.strptime(format_time,'%Y-%m-1')
        timestamp = time.mktime(struct_time)
        return timestamp
    ret = func()
    print(ret)

    二、随机数模块

    1、随机取小数

      random.random():随机取(0,1)之间的小数

      random.uniform(m,n):随机取(m,n)之间的小数

    2、随机取整数:

      random.randint(m,n):随机取[m,n]之间的整数

      random.randrange(m.n):随机取[m,n)之间的整数

      random.randrange(m,n,s):按步长s随机取 [m,n)之间的整数

    3、随机取列表、元组、字符串、range中的数

      random.choice(lst):随机从列表lst中取一个数

      random.example(lst,n):随机从列表中取n个数

    4、乱序

      random.shuffle(lst):打乱原列表

    例题1:生成验证码,包含数字和大小写字母

    import random
    def get_code(n=4,alpha=True):
        code = ''
        for i in range(n):
            c = str(random.randint(0,9))
            if alpha is True:
                alpha_upper = chr(random.randint(65,90))
                alpha_lower = chr(random.randint(97,122))
                c = random.choice([c,alpha_upper,alpha_lower])
            code += c
        return code
    ret = get_code()
    print(ret)  #  4r79
    ret1 = get_code(n=6,alpha=False)
    print(ret1)  # 246842

    例题2:发红包

    import random
    def lucky_money(money,people_num):
        lst = random.sample(range(money*100),people_num-1)
        lst.sort() # 按大小排序
        lst.insert(0,0)
        lst.append(money*100)
        money_lst = []
        for i in range(people_num):
            getmoney = lst[i+1] - lst[i]
            money_lst.append(getmoney/100)
        return money_lst
    
    ret = lucky_money(100,10)
    print(ret)  # [8.43, 1.54, 19.19, 5.52, 1.91, 1.32, 18.36, 6.03, 13.08, 24.62]

    三、os模块

    1、和文件夹、文件相关

    os.mkdir('diename'):在当前文件夹下生成单级目录,若该目录已经存在会报错

    os.makedirs('dirname1/dirname2/dirname3'):在当前文件夹下生成多级目录

    os.rmdir('dirname'):删除当级的空目录,若目录不为空不能删除并报错

    os.removedirs('dirname1/dirname2/dirname3'):若目录为空,则删除,并递归到上一级目录,若也为空则删除,知道不为空的目录

    lst = os.listdir('dirname') :列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式返回

    os.remove('filename'):删除一个文件,不能删除目录

    os.remove('newname','oldname'):重命名一个文件/目录

    ret = os.stat('file_path/dirname'):获取文件/目录信息

    2、和路径相关:

    path = os.path.abspath(path):返回path的规范化路径

    tuple = os.path.split(path):将path分割成路径和文件名,以二元组方式返回

    dir = os.path.dirname(path):获取文件的目录,就是split元组的第一个元素

    filename = os.path.basename(path) :获取一个路径的文件名,即split元组的第二个元素

    os.path.exists(path) :判断路径是否存在

    os.path.isabs(path):判断路径是否是绝对路径,该路径不一定存在

    os.path.isfile(path):判断path路径是不是一个存在的文件

    os.path.isdir(path) :判断path是不是一个存在的文件

    path = os.path.join('path1','path2','path3'...):将多个路径组合后返回,第一个绝对路径之前的参数会被忽略

    os.path.getatime(path):返回path所指向的文件或目录的最后访问时间

    os.path.getmtime(path):返回path所指向的文件或目录的最后修改时间

    os.path.getsize(path):返回path指向的文件或目录的大小,若path指向目录,则大小是4096的倍数

    3、和python程序的工作目录相关

    os.getcwd():获取当前的工作目录,即当前python脚本工作的目录路径

    os.chdir('dirname') :改变当前脚本工作目录;相当于shell下的cd

    4、操作系统命令相关

    os.system('base command') :运行shell命令

    os.popen('base command').read():运行shell命令,获取执行结果

    例题1:获取当前文件的上上级目录

    import os
    base_path = os.path.dirname(os.path.dirname(__file__))
    print(base_path)  #  C:/python

    例题2:计算一个文件夹的大小

    ---恢复内容结束---

    内容大纲

    一、时间模块

    二、随机数模块

    三、sys模块

    四、os模块

  • 相关阅读:
    选择
    git使用笔记
    “子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。”SQL查询错误解析
    sql学习笔记
    python爬虫
    线性代数知识点
    centos7 安装git
    感知机——学习笔记
    Logistic Regression学习笔记
    朴素贝叶斯分类--笔记
  • 原文地址:https://www.cnblogs.com/tian-tian/p/9640940.html
Copyright © 2011-2022 走看看