zoukankan      html  css  js  c++  java
  • time模块、random随机模块、os模块、进度条打印

    一、时间模块

    1、time模块

    在python中时间可分为三种格式:

    1、时间戳:从1970年到现在经过的秒数

    print(time.time())  #1585571976.0806346
    

    作用:用于计算时间间隔的计算

    start = time.time()
    time.sleep(3)
    stop = time.time()
    print(stop - start)  #3.0001108646392822 时间间隔为3秒
    

    2、按照某种个格式显示的时间:

    作用:用于比较清楚的展示时间( 以指定格式输入"年月日 时分秒")

    print(time.strftime('%Y-%m-%d %H:%M:%S %p'))  #2020-03-30 20:43:01 PM
    print(time.strftime('%Y-%m-%d %H:%M:%S'))  #2020-03-30 20:43:46
    

    3、格式化的时间(得到是一个关于时间的元组)

    作用:用于单独的获取时间的某一部分

    res = time.localtime()
    print(res)
    #time.struct_time(tm_year=2020, tm_mon=3, tm_mday=30, tm_hour=20, tm_min=53, tm_sec=23, tm_wday=0, tm_yday=90, tm_isdst=0)
    print(res.tm_year)  #2020 只获取当前时间的年份
    print(res.tm_mon)  #3 只获取当前时间的月份
    

    2、datetime模块

    1、以默认的格式输入当前的时间,不用指定格式。

    print(datetime.datetime.now())  #2020-03-30 21:00:45.586392
    

    2、可以获得加或减一段时间后应该显示的(有点类似增/减量赋值),跟时间戳计算不同的是,前者计算得到是两个时间点间的间隔时间,而后者得到的是一个时间点加减时间间隔后获得的另一个时间点。

    print(datetime.datetime.now() + datetime.timedelta(days=1))
    print(datetime.datetime.now() + datetime.timedelta(hours=20))
    

    3、时间格式之间的转换:

    1、struct_time->时间戳

    import time
    
    res = time.localtime()
    print(time.mktime(res))
    

    2、时间戳->struct_time

    res = time.time()
    print(time.localtime(res))
    

    ps:世界标准时间与本地时间,时区不一样所以当前小时不同,其他都相同

    print(time.localtime())
    print(time.gmtime())
    

    3、struct_time->按的字符串形式的时间

    res=time.localtime()
    print(time.strftime('%Y-%m-%d %H:%M:%S'))
    print(time.strptime('2020-11-11 11:11:11','%Y-%m-%d %H:%M:%S'))
    

    4、表示时间的字符串与时间戳之间的转换(format string<--->timestamp),不能直接转换,得通过格式时间间接转换

    #format string--->struct_time--->timestamp
    struct_time=time.strptime('2020-11-11 11:11:11','%Y-%m-%d %H:%M:%S')
    timestemp=(time.mktime(sturct_time))
    print(timestemp)
    
    # format string<---struct_time<---timestamp
    res=time.strftime('%Y-%m-%d %X',time.localtime(timestemp))
    print(res)
    
    # 了解知识
    import time
    print(time.asctime())  #Mon Mar 30 21:50:44 2020
    
    import datetime
    print(datetime.datetime.now())
    print(datetime.datetime.utcnow())
    print(datetime.datetime.fromtimestamp(333333))
    

    二、random随机模块

    基本用法汇总:

    import random
    
    print(random.random()) #(0,1)----float    大于0且小于1之间的小数
    print(random.randint(1, 3))  # [1,3]    大于等于1且小于等于3之间的整数
    
    print(random.randrange(1, 3))  # [1,3)    大于等于1且小于3之间的整数
    
    print(random.choice([111, 'aaa', [4, 5]]))  # 1或者23或者[4,5]
    
    print(random.sample([111, 'aaa', 'ccc','ddd'],2))  # 列表元素任意2个组合
    
    print(random.uniform(1, 3))  # 大于1小于3的小数,如1.927109612082716
    

    random模块的应用案例

    生成随机验证码:

    思路:

    res=''
    for i in range(6):
        从26大写字母中随机取出一个=chr(random.randint(65,90))
        从10个数字中随机取出一个=str(random.randint(0,9))
    
        随机字符=random.choice([从26大写字母中随机取出一个,从10个数字中随机取出一个])
        res+=随机字符
    

    代码实现:

    import random
    def make_num(size):
        str1=''
        res1=random.randint(65,90)
        res2=random.randint(1,9)
        for i in range(size):
            str1+=random.choice([chr(res1),str(res2)])
        return str1
    
    print(make_num(11))
    

    三、os模块

    1、获取某一个文件夹下所有的子文件以及子文件夹的名字

    import os
    res=os.listdir('文件夹路径')
    print(res)
    

    2、每个文件都有size大小的属性,可以通过os模块中的方法直接获得

    size=os.path.getsize(r'C:UsersasusPycharmProjects正课day22')
    print(size)
    

    3、永久的删除一个文件

    os.remove(r'C:UsersasusPycharmProjects正课day22永久删除.py')
    

    4、 重命名

    os.rename(r'C:UsersasusPycharmProjects正课day22改吧改吧.txt',
              r'C:UsersasusPycharmProjects正课day22改了改了.txt')
    

    5、将文件路径加到电脑的环境变量中去,在任何文件或程序都能查看到

    os.environ['aaaaaaaaaa']='111'
    print(os.environ)
    

    6、获得文件所在的文件夹,父级文件路径

    print(os.path.dirname(r'C:UsersasusPycharmProjects正课day22'))
    print(os.path.dirname())
    

    7、获得文件路径最底层的文件

    print(os.path.basename(r'C:UsersasusPycharmProjects正课day22'))  #day22
    

    8、判断文件路径所指的是不是文件,是文件返回True,是文件夹返回False

    print(os.path.isfile(r'C:UsersasusPycharmProjects正课'))  #False
    print(os.path.isfile(r'C:UsersasusPycharmProjects正课a.py')  #True
    

    9、判断文件路径所指的是不是文件夹,是文件夹返回True,是文件返回False

    print(os.path.isdir(r'C:UsersasusPycharmProjects正课'))  #True
    print(os.path.isdir(r'C:UsersasusPycharmProjects正课a.py''))  #False
    

    10、把所给的字符串拼接成文件路径

    print(os.path.join('a','b','c','d'))  #acd
    

    11、获得当前执行文件的父级文件夹

    方式1:

    BASE_DIR=os.path.dirname(__file__)
    print(BASE_DIR)  #E:老男孩正课上课笔记
    

    方式2:

    BASE_DIR=os.path.normpath(os.path.join(
        __file__,
        '..',
        '..'
    ))
    print(BASE_DIR)  #E:老男孩正课上课笔记
    

    推荐使用第一种方式

    方式3:

    在python3.5之后,推出了一个新的模块pathlib

    from pathlib import Path
    
    res = Path(__file__).parent.parent
    print(res)  #E:老男孩正课上课笔记
    

    四、sys 模块

    基本使用,查看执行文件的环境变量,得到的是一个列表,可以添加路径到环境变量中去,只是临时添加,文件运行结束就回收掉

    import sys
    
    print(sys.path)
    sys.path.append('a/b.txt')
    print(sys.path)
    

    1、sys.argv获得解释器后的参数

    在cmd终端复制文件

    import sys
    import os
    # src_file=input('源文件路径: ').strip()
    # dst_file=input('目标文件路径: ').strip()
    src_file=sys.argv[1]
    dst_file=sys.argv[2]
    if os.path.isfile(src_file):
        with open(f'{src_file}',mode='rb') as read_f, 
                open(f'{dst_file}', mode='wb') as write_f:
            for line in read_f:
                write_f.write(line)
    #python3 run.py src_file dst_file  
    

    五、打印进度条

    def progress(percent):
        if percent > 1:
            percent = 1
        res = int(50 * percent) * '#'
        print('
    [%-50s] %d%%' % (res, int(100 * percent)), end='')
    
    recv_size=0
    total_size=1025
    
    while recv_size < total_size:
        time.sleep(0.01) # 下载了1024个字节的数据
    
        recv_size+=1024 # recv_size=2048
    
        # 打印进度条
        # print(recv_size)
        percent = recv_size / total_size  # 1024 / 333333
        # progress(percent)
        res = int(50 * percent) * '#'
        print('
    [%-50s] %d%%' % (res, int(100 * percent)), end='')
    
  • 相关阅读:
    VC++ 常用数学函数
    Skin++的使用 (成功在vs2008试过)
    解决switch使用String做参数 (jdk1.7新增),更改jdk版本后报错的问题
    [转]jdk1.7中 新增 switch 使用String 做参数 的实现
    [转]网页版Firebug
    [转]Eclipse导入工程后,XDoclet错误:Missing library: xdoclet1.2.1.jar. Select the home directory for XDoclet. 1.
    SAP related blogs
    [转]SAP FI/CO 模块设置
    如何调用BADI
    [转]一则关于ABAP程序员的趣谈
  • 原文地址:https://www.cnblogs.com/zhangtieshan/p/12609784.html
Copyright © 2011-2022 走看看