zoukankan      html  css  js  c++  java
  • python之路-day21-模块介绍1

    一、今日内容大纲

      1、关于模块

        import

        from xxx import xxx    绝对导入

      2、Collections

        1)Counter 计数器 

        2)栈:先进后出

           队列:先进先出

           deque : 双向队列

        3)defaultdict  默认值字典

        4)namedtuple 元祖命名。struct_time 结构化时间就是命名元祖

        5)OredereDict  有序字典,按照我们存储的顺序保存

      3、time 时间模块

        1)获取系统时间 time.time()  时间戳

        2)格式化时间  strftime()  时间格式: %Y-%m-%d %H:%M:%S  or   %Y-%m-%d

        3) 结构化时间:time.gmetime()  time.localtime()----东八区

        4)把格式化时间转化为结构时间  strptime()

          把结构时间转化为时间戳  mktime()

      4、os和sys

        os.sep 文件路径分隔符

        sys.path  python查找模块的路径


    二、Collections 模块

      1、Counter计数器 

    from collections import Counter
    
    s = " i am sylar, i have a dream,,,"
    
    ss = Counter(s) # 计算⼀个字符串中每个字符出现的次数
    print(ss)
    
    dic = {}
    for el in s:   # 如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值
        dic[el] = dic.setdefault(el,0) + 1
    
    print(dic)
    
    
    ##结果:
    Counter({' ': 7, 'a': 5, ',': 4, 'i': 2, 'm': 2, 'r': 2, 'e': 2, 's': 1, 'y': 1, 'l': 1, 'h': 1, 'v': 1, 'd': 1})
    {' ': 7, 'i': 2, 'a': 5, 'm': 2, 's': 1, 'y': 1, 'l': 1, 'r': 2, ',': 4, 'h': 1, 'v': 1, 'e': 2, 'd': 1}

      

      2. deque 双向队列.
        (重点)说双向队列之前我们需要了解两种数据结构. 1. 栈, 2. 队列
        1. 栈: FILO. 先进后出 -> 砌墙的砖头, 老师傅做馒头
        2. 队列: FIFO. 先进先出 -> 买火⻋票排队, 所有排队的场景 

    # 栈 (先进后出)
    
    # class Stack:
    #     def __init__(self,size):
    #         self.index = 0  # 栈顶指针
    #         self.lst = []
    #         self.size = size
    #
    #     # 给栈添加元素
    #     def push(self,item):
    #         if self.index == self.size:
    #             #栈已经满了,不能再装东西了
    #             pass
    #         self.lst.insert(self.index,item)  # 对于空列表,需要用insert插入内容
    #         self.index += 1 # 栈顶指针向上移动
    #
    #     # 从栈中获取数据
    #     def pop_item(self):
    #         if self.index == 0:
    #             pass
    #         self.index -= 1  # 顶指针向下移动
    #         item = self.lst.pop(self.index)  # 获取元素删除
    #         return item
    #
    # s = Stack(5)
    
    
    # 队列
    # import queue  先进先出
    #
    #
    # q = queue.Queue() # 创建队列
    # q.put("李嘉诚")
    # q.put("深圳吴彦祖")
    # q.put("周润发")
    # q.put("韩寒")
    #
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # # print(q.get()) # 如果队列中没有元素了,继续获取的话会发生阻塞
    # print("done")
    
    
    # # 双向队列
    #
    # from collections import deque
    #
    # q = deque()     # 创建一个双向队列
    # q.append("高圆圆")
    # q.append("江疏影")
    # q.appendleft("赵又廷")
    # q.appendleft("刘某某")
    #
    # print(q.pop())
    # print(q.pop())
    # print(q.popleft())
    # print(q.popleft())
    # print(q.pop())

      3、namedtuple 命名元组

        命名元组, 顾名思义. 给元组内的元素进⾏命名. 比如. 我们说(x, y) 这是⼀个元组. 同时. 我们还可以认为这是⼀个点坐标.

        这时, 我们就可以使⽤namedtuple对元素进⾏命名

    # from collections import namedtuple
    # point = namedtuple("Point", ["x","y","z"])
    # p = point(1,23,22)
    # print(p.x)
    # print(p.y)
    # print(p.z)
    # print(p)

      4、defaultdict: 可以给字典设置默认值. 当key不存在时. 直接获取默认值:

    # from collections import defaultdict
    #
    # lst = [11,22,33,44,55,66,77,88]
    #
    # d = defaultdict(list)
    #
    # for el in lst:
    #     if el < 66:
    #         d["key1"].append(el)
    #     else:
    #         d["key2"].append(el)
    # print(d)

    三、time模块

    # time
    # import time
    # while 1:
    #     s = time.strftime("%Y-%m-%d %H:%M:%S")
    #     print(s)
    #     time.sleep(1)
    
    # import time
    #
    # t = time.gmtime(971150400.0)
    # s = time.strftime("%Y-%m-%d %H:%M:%S",t)
    # print(s)
    
    # s = "2000-10-10 12:00:00"
    # t = time.strptime(s,"%Y-%m-%d %H:%M:%S")
    # print(time.mktime(t))
    # s = "2020-10-01 12:18:12"
    # t = time.strptime(s, "%Y-%m-%d %H:%M:%S") # 转化成结构时间
    # print(time.mktime(t)) # 转换成时间戳
    
    
    # 时间显示中文
    # import locale,time
    #
    # locale.setlocale(locale.LC_COLLATE,"chinese")
    # print(time.strftime("%Y年%m月%d日"))
    #
    
    # 计算时间差
    # import time
    # old_time = time.mktime(time.strptime("2018-11-10 10:30:00","%Y-%m-%d %H:%M:%S"))
    # nowtime = time.mktime(time.strptime("2018-11-10 12:00:00","%Y-%m-%d %H:%M:%S"))
    # dif_time = nowtime - old_time
    # total_min = int(dif_time / 60)
    # hour = int(total_min / 60)
    # min = int(total_min % 60)
    # print("时间差为:%s小时%s分"%(hour,min))

    四、random 模块

    import random
    
    print(random.randint(1,3)) # 1-3随机取一个,前后都为闭区间
    print(random.random())  # 0-1 之间的小数
    print(random.uniform(3,10)) # 3-10 之间的随机小数
    print(random.randrange(1,10,3)) # [1,10) 从奇数中获取随机数
    
    lst = [1,2,3,4,5,6]
    random.shuffle(lst)  # 打散
    print(lst)           #[6, 1, 5, 3, 2, 4]
    print(random.choice([1, '周杰伦', ["盖伦", "胡辣汤"]])) #取一个元素
    print(random.sample([1, '23', [4, 5]], 2)) # 列表元素任意2个组合

    五、os模块

    import os
    
    os.makedirs('dirname1/dirname2') #可⽣成多层递归⽬录
    os.removedirs('dirname1') #若⽬录为空,则删除,并递归到上⼀级⽬录,如若也为空,则删
    #除,依此类推
    os.mkdir('dirname') #⽣成单级⽬录;相当于shell中mkdir dirname
    os.rmdir('dirname') # 删除单级空⽬录,若⽬录不为空则⽆法删除,报错;相当于shell中rmdir dirname
    os.listdir('dirname') #列出指定⽬录下的所有⽂件和⼦⽬录,包括隐藏⽂件,并以列表⽅式打印
    os.remove() #删除⼀个⽂件
    os.rename("oldname","newname") #重命名⽂件/⽬录
    os.stat('path/filename') #获取⽂件/⽬录信息
    os.system("bash command") #运⾏shell命令,直接显示
    os.popen("bash command").read() #运⾏shell命令,获取执⾏结果
    os.getcwd() #获取当前⼯作⽬录,即当前python脚本⼯作的⽬录路径
    os.chdir("dirname") #改变当前脚本⼯作⽬录;相当于shell下cd
    
    # os.path
    os.path.abspath(path) #返回path规范化的绝对路径
    os.path.split(path) #将path分割成⽬录和⽂件名⼆元组返回
    os.path.dirname(path) #返回path的⽬录。其实就是os.path.split(path)的第⼀个元素
    os.path.basename(path) #返回path最后的⽂件名。如何path以/或结尾,那么就会返回空值。
    #即os.path.split(path)的第⼆个元素
    os.path.exists(path) #如果path存在,返回True;如果path不存在,返回False
    os.path.isabs(path) #如果path是绝对路径,返回True
    os.path.isfile(path) #如果path是⼀个存在的⽂件,返回True。否则返回False
    os.path.isdir(path) #如果path是⼀个存在的⽬录,则返回True。否则返回False
    os.path.join(path1[, path2[, ...]]) #将多个路径组合后返回,第⼀个绝对路径之前的参数
    将被忽略
    os.path.getatime(path) #返回path所指向的⽂件或者⽬录的最后访问时间
    os.path.getmtime(path) #返回path所指向的⽂件或者⽬录的最后修改时间
    os.path.getsize(path) #返回path的⼤⼩
    # 特殊属性:
    os.sep #输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    os.linesep #输出当前平台使⽤的⾏终⽌符,win下为"
    ",Linux下为"
    "
    os.pathsep #输出⽤于分割⽂件路径的字符串 win下为;,Linux下为:
    os.name #输出字符串指示当前使⽤平台。win->'nt'; Linux->'posix'
    
    os.stat() #属性解读:
    stat #结构:
    st_mode: inode 保护模式
    st_ino: inode 节点号。
    st_dev: inode 驻留的设备。
    st_nlink: inode 的链接数。
    st_uid: 所有者的⽤户ID。
    st_gid: 所有者的组ID。
    st_size: 普通⽂件以字节为单位的⼤⼩;包含等待某些特殊⽂件的数据。
    st_mtime: 最后⼀次修改的时间。
    st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在
    其它系统上(如Windows)是创建时间(详细信息参⻅平台的⽂档)

    六、sys模块

    所有和python解释器相关的都在sys模块. 
    sys.argv 命令⾏参数List,第⼀个元素是程序本身路径
    sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
    sys.version 获取Python解释程序的版本信息
    sys.path 返回模块的搜索路径,初始化时使⽤PYTHONPATH环境变量的值
    sys.platform 返回操作系统平台名称
  • 相关阅读:
    IntelliJ IDEA 14.03 java 中文文本处理中的编码格式设置
    应聘感悟
    STL string分析
    CUDA SDK VolumeRender 分析 (1)
    BSP
    CUDA SDK VolumeRender 分析 (3)
    CUDA SDK VolumeRender 分析 (2)
    Windows软件发布时遇到的一些问题
    Ten Commandments of Egoless Programming (转载)
    复习下光照知识
  • 原文地址:https://www.cnblogs.com/alvin-jie/p/9960557.html
Copyright © 2011-2022 走看看