zoukankan      html  css  js  c++  java
  • day22-时间模块、random模块、os模块、sys模块

    时间模块

    time

    import time
    
    时间分为三种格式:
    1、时间戳:从1970年到现在经过的秒数
       作用:用于时间间隔的计算
    
    print(time.time()) # 1612522068.0428286
    
    2、按照某种格式显示的时间:2020-03-30 11:11:11
       作用:用于展示时间
    
    print(time.strftime('%Y-%m-%d %H:%M:%S %p')) # 2021-02-05 18:48:09 PM
    print(time.strftime('%Y-%m-%d %X')) # 2021-02-05 18:48:23
    
    3、结构化的时间
       作用:用于单独获取时间的某一部分
    
    res=time.localtime()
    	print(res)
    	print(res.tm_year)
    	print(res.tm_yday)
    

    datetime

    import datetime
    
    print(datetime.datetime.now()) # 2021-02-05 18:51:00.268453
    print(datetime.datetime.now() + datetime.timedelta(days=3)) # 2021-02-08 18:51:15.130269
    print(datetime.datetime.now() + datetime.timedelta(weeks=1)) # 2021-02-12 18:51:23.969053
    

    时间模块需要掌握的操作
    1、时间格式的转换
    struct_time->时间戳

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

    时间戳->struct_time

    tp_time=time.time()
    print(time.localtime(tp_time)) 
    # time.struct_time(tm_year=2021, tm_mon=2, tm_mday=5, tm_hour=18, tm_min=52, tm_sec=36, tm_wday=4, tm_yday=36, tm_isdst=0)
    

    补充:世界标准时间与本地时间

    print(time.localtime())
    # time.struct_time(tm_year=2021, tm_mon=2, tm_mday=5, tm_hour=18, tm_min=54, tm_sec=18, tm_wday=4, tm_yday=36, tm_isdst=0)
    print(time.gmtime()) # 世界标准时间,了解
    # time.struct_time(tm_year=2021, tm_mon=2, tm_mday=5, tm_hour=10, tm_min=54, tm_sec=36, tm_wday=4, tm_yday=36, tm_isdst=0)
    print(time.localtime(333333333))
    # time.struct_time(tm_year=1980, tm_mon=7, tm_mday=25, tm_hour=8, tm_min=35, tm_sec=33, tm_wday=4, tm_yday=207, tm_isdst=0)
    print(time.gmtime(333333333))
    # time.struct_time(tm_year=1980, tm_mon=7, tm_mday=25, tm_hour=0, tm_min=35, tm_sec=33, tm_wday=4, tm_yday=207, tm_isdst=0)
    

    struct_time->格式化的字符串形式的时间

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

    !!!真正需要掌握的只有一条:format string<------>timestamp

    ‘1988-03-03 11:11:11’+7

    format string—>struct_time—>timestamp

    struct_time=time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S')
    	timestamp=time.mktime(struct_time)+7*86400
    	print(timestamp)
    

    format string<—struct_time<—timestamp

    res=time.strftime('%Y-%m-%d %X',time.localtime(timestamp))
    	print(res)
    	
    	time.sleep(3)
    

    了解知识

    import time
    print(time.asctime()) # Fri Feb  5 18:57:30 2021
    
    
    import datetime
    print(datetime.datetime.now()) # 2021-02-05 18:58:00.029894
    print(datetime.datetime.utcnow()) # 2021-02-05 10:57:45.603007
    
    print(datetime.datetime.fromtimestamp(333333)) # 1970-01-05 04:35:33
    

    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
    
    item = [1, 3, 5, 7, 9]
    random.shuffle(item)  # 打乱item的顺序,相当于"洗牌"
    print(item)
    

    应用:随机验证码

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

    os模块

    import os
    
    # 获取某一个文件夹下所有的子文件以及子文件夹的名字
    res = os.listdir('.')
    print(res)
    
    
    size = os.path.getsize(
        r'/Users/linhaifeng/PycharmProjects/s14/day22/01 时间模块.py')
    print(size)
    
    
    os.remove()  删除一个文件
    os.rename("oldname", "newname")  重命名文件/目录
    
    
    应用程序----"ls /"
    os.system("ls /")
    
    规定:key与value必须都为字符串
    
    os.environ['aaaaaaaaaa'] = '111'
    print(os.environ)
    
    
    print(os.path.dirname(r'/a/b/c/d.txt'))
    print(os.path.basename(r'/a/b/c/d.txt'))
    
    
    print(os.path.isfile(r'笔记.txt'))
    print(os.path.isfile(r'aaa'))
    print(os.path.isdir(r'aaa'))
    
    print(os.path.join('a', '/', 'b', 'c', 'd'))
    
    
    推荐用这种
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    print(BASE_DIR)
    
    
    BASE_DIR = os.path.normpath(os.path.join(
        __file__,
        '..',
        '..'
    ))
    print(BASE_DIR)
    
    在python3.5之后,推出了一个新的模块pathlib
    
    res = Path(__file__).parent.parent
    print(res)
    
    
    res = Path('/a/b/c') / 'd/e.txt'
    print(res)
    
    print(res.resolve())
    
    

    sys模块

    import sys
    
    python3.8 run.py 1 2 3
    sys.argv获取的是解释器后参数值
    print(sys.argv)
    
    src_file = input('源文件路径: ').strip()
    dst_file = input('目标文件路径: ').strip()
    
    src_file = sys.argv[1]
    dst_file = sys.argv[2]
    # 判断
    
    with open(r'%s' % src_file, mode='rb') as read_f,
            open(r'%s' % dst_file, mode='wb') as write_f:
        for line in read_f:
            write_f.write(line)
    
    python3.8 run.py src_file dst_file
    
    
    print('[%-50s]' % '#')
    print('[%-50s]' % '##')
    print('[%-50s]' % '###')
    
    
    res = ''
    for i in range(50):
        res += '#'
        time.sleep(0.5)
        print('
    [%-50s]' % res, end='')
    
    
    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 = 1025011
    
    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)
    
    

    作业

    1、检索文件夹大小的程序,要求执行方式如下
        python3.8 run.py 文件夹
    2、明天上午日考:随机验证码、模拟下载以及打印进度条、文件copy脚本
    
  • 相关阅读:
    NumPy笔记:运算符(exp,sqrt,square)
    NumPy笔记:常用操作
    php字符操作
    laravel如何实现批量插入
    php中@符号的作用
    laravel如何实现数据的批量插入
    如何在laravel框架中使用阿里云的oss
    laravle如何设置mysql数据表前缀
    thinkphp视图中如何调用并且向控制器传参数
    thinkphp如何隐藏入口文件index.php
  • 原文地址:https://www.cnblogs.com/zdw20191029/p/14553350.html
Copyright © 2011-2022 走看看