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 返回操作系统平台名称
  • 相关阅读:
    org.mybatis.spring.mapper.MapperScannerConfigurer$Scanner$1
    LayoutInflater
    发现javax.xml.parsers.SAXParser有bug
    startActivityForResult and onActivityResult
    Sub Thread to update main Thread (UI) 2
    Sub Thread to update main Thread (UI)
    打算听的歌
    会话状态Session
    HttpResponse类
    HttpRequest类
  • 原文地址:https://www.cnblogs.com/alvin-jie/p/9960557.html
Copyright © 2011-2022 走看看