zoukankan      html  css  js  c++  java
  • 疫情环境下的网络学习笔记 python 3.30

    3.30

    正课

    time 模块

    import time
    

    时间分为三种格式

    • 时间戳

      从1970年到现在经历过的秒

      print(time.time())
      # 1585530854.2276137
      

      用于时间间隔的计算

    • 按照某种格式显示的时间,如2020-03-30

      print(time.strftime('%Y-%m-%d %H:%M:%S %p'))
      # 2020-03-30 09:09:53 AM
      print(time.strftime('今天是%Y年%m月%d日,现在是%H点%M分%S秒%p'))
      # 今天是2020年03月30日,现在是09点19分32秒AM
      # %x 当前的日期 
      

      用于展示时间

    • 结构化的时间

      res = time.localtime()
      print(res.tm_year) # 
      print(res.tm_yday) # 这一年里已经过了多少天
      print(res.tm_hour) # 获取当前小时。。。
      

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

    datetime 模块

    import datetime
    print(datetime.datetime.now())
    # 2020-03-30 09:24:16.711104
    # 返回这个格式的时间
    

    可以直接用来计算时间,在.timedelta里指定参数

    print(datetime.datetime.now() + datetime.timedelta(days=3))
    # 三天后的时间
    print(datetime.datetime.now() + datetime.timedelta(weeks=3))
    # 三周后的时间
    

    时间格式的转换

    时间戳,结构化时间,格式化的字符串时间可以互相转换

    time.mktime(structtime) # 将格式化时间转换为时间戳
    
    
    # 结构化时间转时间戳
    import time
    s_time = time.localtime()
    print(s_time)
    print(time.mktime(s_time))
    # time.(tm_year=2020, tm_mon=3, tm_mday=30, tm_hour=9, tm_min=32, tm_sec=9, tm_wday=0, tm_yday=90, tm_isdst=0)
    # 1585531929.0
    
    # 时间戳转格式化时间
    tp_time = time.time()
    print(time.localtime(tp_time))
    
    # 世界时间,gmt时间
    print(time.localtime(tp_time))
    print(time.gmtime(tp_time))
    
    s_time = time.localtime()
    print(s_time)
    print(time.strftime('%Y-%m-%d %H:%M:%S %p',s_time))  # struct time在第二个参数
    

    格式化的时间与时间戳互转

    当时间存在文件里,读取的时候不是time类型,而是字符串,进行时间计算需要要进行转换

    首先将格式化字符串时间转为时间戳

    # '2020-03-30 09:38:06'
    # 格式化字符串时间先转成结构化时间,再转字符串,再转回来转成格式化字符串时间
    # format string -----> struct time-----> timestamp
    
    struct_time=time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S')
    # 第一个参数是字符串时间,第二个参数按格式填入%
    print(struct_time)  # 转成struct time
    timestamp=time.mktime(struct_time)+7*86400  # 转成时间戳,加7*86400秒
    print(timestamp)
    

    时间戳再转回格式化字符串时间

    res=time.strftime('%Y-%m-%d %X',time.localtime(timestamp))  # 先转成struct time,再转成格式化字符串
    print(res)
    

    了解

    print(time.asctime())
    # Mon Mar 30 09:53:04 2020
    

    random模块

    import random
    print(random.random())  # 随机得到0,1之间的浮点数
    print(random.randint(1,3))  # 随机取一个闭区间范围的整数
    print(random.randrange(1,3)) # 随机选数字,左闭右开
    print(random.choice([1,'aaa',[4,5]]))  # 随机得到任意一个元素
    print(random.sample([1,3,222,'aaa',[4,5]],3)  # 随机取出列表中的指定个元素,放进一个列表
    print(random.uniform(1,3))  # 随机得到一个1,3之间的小数
    

    应用:生成随机验证码

    # 生成4位数字验证码
    import random
    print(random.randint(0,9999))  # 4位验证码
    
    # 生成6位字母 + 数字验证码
    # 随机得到一个字母,可以随机产生字母的ASCII表中的编码,再转成字母
    # chr(65) :'A'  chr(90):'Z'
    # ord('A'): 65
    res = ''
    for i in range(6):
        s1 = chr(random.randint(65, 90))
        s2 = str(random.randint(0, 9))
        res += random.choice([s1,s2])
    
    print(res)
    
    # X3I11G
    

    os 模块

    import os
    os.getcwd()  # 获得当前python文件路径
    os.chdir('dirname')  # 改变当前工作目录
    os.rename(oldname,newname)  # 重命名文件
    os.mkdir('dirname')  # 生成空目录
    os.removedirs(dirname)  # 递归删除所有空目录
    os.listdir()  # 获取某一个文件夹下所有的子文件以及文件夹的名字
    os.path.getsize()  # 查看文件大小
    os.remove(path)  # 删除一个文件
    os.system(cmd)  # 运行windows命令,在操作系统上运行
    print(os.environ)  # 查看全部的环境变量
    # os.environ 得到一个字典,其中key和value中都是str
    

    os.path 系列

    import os
    print(os.path.abspath(__file__))  # 得到当前文件的绝对路径,会转换成当前平台的格式
    print(__file__)  # 与这个用法一样
     
    print(os.path.dirname(path))  # 返回path的目录。其实就是os.path.split(path)的第一个元素
    print(os.path.basename(path))  # 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
    
    os.path.join((path1[, path2[, ...]])  # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
                 
    os.path.getsize(path)  # 返回path 的大小
    

    取上级目录,还是推荐使用,py2,py3都能用

    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    

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

    from pathlib import Path
    res = Path(__file__).parent.parent
    

    sys模块

    sys.path  # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    sys.argv  # 命令行参数List,第一个元素是程序本身路径
    

    示例1:使用sys.argv 传入的文件路径对文件进行拷贝操作

    示例2:打印进度条功能:

    # print('
    [%-50s]'%'#',end='') 左对齐,宽度为50,每次打印都从行首开始打印,实现动态显示
    
    # 要真的实现进度条,而不是光打印
    
    # 假设要下载数据
    recv_size = 0
    total_size = 500000
    while recv_size < total_size:
        # 模拟每次下载1024个数据
        time.sleep(0.01)
        recv_size += 1024
    	# 打印进度条
        percent = recv_size / total_size
        if percent > 1:
            percent = 1
        res = int(50*percent)*'#'
        print('
    [%-50s] %d%%'%(res,percent*100),end='')
    

    改进,写成函数

    def progress(percent):
    	if percent > 1:
    		percent = 1
    	
    

    shutil 模块

    import shutil
    shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))
    # 将文件内容拷贝到另一个文件中
    
    shutil.copyfile('f1.log', 'f2.log')  # 目标文件无需存在
    
    ...
    
  • 相关阅读:
    647. Palindromic Substrings
    151. Reverse Words in a String
    iOS UICollectionView(转一) XIB+纯代码创建:cell,头脚视图 cell间距
    iOS tableViewCell 在自定义高度方法中遇到的问题,cell高度为0,cell显示不出来,cell直接显示第几个而不是...cell显示个数不对
    iOS自定义文字高度添加行间距
    iOS 去掉小数点后边多余的0
    iOS 接收新消息通知调用系统声音 震动
    iOS 正则表达式使用(转)
    iOS实现类似QQ的好友列表,自由展开折叠(在原来TableView的基础上添加一个字典,一个Button)
    iOS 工程默认只允许竖屏,在单独界面进行横竖转换,屏幕旋转
  • 原文地址:https://www.cnblogs.com/telecasterfanclub/p/12600490.html
Copyright © 2011-2022 走看看