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模块

  • 相关阅读:
    mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
    mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,
    nfs missing codepage or helper program, or other error
    date 增加一个小时 减少一个小时
    mysqldump 备份单个数据库
    mysql删除账户
    怎么删除某个用户的所有帖子?
    mongodb删除重复数据
    ReSharper2018破解详细方法
    激活windows和office
  • 原文地址:https://www.cnblogs.com/tian-tian/p/9640940.html
Copyright © 2011-2022 走看看