• python--(常用模块-1)


    python--(常用模块-1)

    一.模块的简单认识:

      什么是模块,模块就是我们把装有特有功能的代码进行归类的结果,从代码编写的单位来看我们的程序,从小到大的顺序:一条代码<语句块<代码块(函数,类)<模块.我们目前写的所有的py文件都是模块.

      引入模块的方式:

        1,import模块

        2,forom xxx import模块

    二.collections模块

      1,Counter是一个计数器.主要用来计数

        计算一个字符串中每个字符出现的次数:

    1 from collections import Counter #引入模块,计数器
    2     # c = Counter #创建起来和字典差不多
    3 list = ["周杰伦", '周杰伦', "孔辉", "大阳哥", "大阳哥", "刘伟", "刘伟"]
    4 c = Counter(list) #建一个counter对象
    5 print(c)
    6 print(c["孔辉"])
    counter

        

     2.deque双向队列.
    """ 1. 栈: FILO. 先进后出 -> 砌墙的砖头, 老师傅做馒头
    2. 队列: FIFO. 先进先出 -> 买火⻋票排队 所有排队的场景
    """
     1 from collections import deque
     2 d = deque() #创建双向队列
     3 d.append("李茶的姑妈") # 默认在右侧添加
     4 d.append("无双")
     5 d.append("")
     6 d.append("找到你")
     7 #让悲伤逆流成河, 理查的姑妈, 无双, 影, 找到你
     8 print(d)
     9 d.appendleft("让悲伤逆流成河") # 左侧添加
    10 print(d)
    11 
    12 
    13 print(d.pop()) # 从右边删除
    14 print(d.pop()) # 从右边删除
    15 print(d.popleft()) # 从左边删除
    16 print(d.pop()) # 从右边删除
    17 print(d)
    deque双向队列
     1 # 队列: 先进先出.  First In First Out FIFO
     2 # 栈: 先进后出. First In Last Out FILO
     3 import queue
     4 # q = queue.Queue() # 创建队列
     5 # q.put("刘伟") # 放入元素
     6 # q.put("大阳哥")
     7 # q.put("吴佩琪")
     8 #
     9 # print(q.get())  # 获取元素
    10 # print(q.get())
    11 # print(q.get())
    12 # print(q.get()) # 阻塞了. 在等下一个元素, input()
    13 
    14 # 装馒头的桶
    15 # 1. 入栈
    16 # 2. 出栈
    17 # 属性:   1. 列表(容器) 2.大小(size) 3. 栈顶指针(下一个装元素的位置)
    18 class StackFullError(Exception):
    19     pass
    20 class StackEmptyError(Exception):
    21     pass
    22 class Stack:
    23     def __init__(self, size):
    24         self.index = 0  #  栈顶指针
    25         self.size = size
    26         self.lst = []  # 容器
    27 
    28     def push(self, el):
    29         if self.index < self.size:  #  还没有装满
    30             self.lst.insert(self.index, el)
    31             self.index += 1
    32         else:   # 装满了
    33             raise StackFullError("the stack is full!")
    34 
    35     def pop(self):
    36         if self.index > 0:
    37             self.index -= 1
    38             return self.lst[self.index]
    39         else:
    40             raise StackEmptyError("the stack is empty!")
    41 
    42 # 使用
    43 # 1.实例化栈
    44 s = Stack(5)
    45 s.push("馒头1")
    46 print(s.pop())
    47 s.push("馒头2")
    48 print(s.pop())
    49 s.push("馒头3")
    50 print(s.pop())
    51 s.push("馒头4")
    52 print(s.pop())
    53 s.push("馒头5")
    54 print(s.pop())
    55 s.push("馒头6")
    56 print(s.pop())
    栈和队列


     3. namedtuple 命名元组
    命名元组, 顾名思义. 给元组内的元素进⾏命名. 比如. 我们说(x, y) 这是一个元组. 同
    时. 我们还可以认为这是一个点坐标. 这时, 我们就可以使用namedtuple对元素进命名
    1 from collections import namedtuple
    2 #自己定义一个元祖,如果灵活性好,这就是创建了一个类
    3 nt = namedtuple("point",["x","y"])
    4 p = nt(1,2)
    5 print(p)
    6 
    7 print(p.x)
    8 print(p.y)
    namedtuple 命名元祖

      

     4.orderdict和defaultdict
    orderdict顾名思义.字典的key默认是无序的.而OrderedDict是有序的
    1 dic = {"a":"娃哈哈","b":"百事可乐","c":"阿萨姆"}
    2 print(dic)
    3 
    4 from collections import OrderedDict
    5 od = OrderedDict({"a":"娃哈哈","b":"百事可乐","c":"阿萨姆"})
    6 print(od)
    orderdict

      

       defaultdict:可以给字典设置默认值.直接获取默认值:
    1 from collections import defaultdict
    2 d = defaultdict(list) # {} list() 必须是callable
    3 d['刘伟'] = "奥特曼"
    4 print(d['孔辉']) # 当key不存在的时候. 返回默认值.其实就是callable()
    5 print(d['刘伟'])
    defaultdict
    三.time时间模块(重点)
        

        1. 时间戳(timestamp). 时间戳使⽤的是从1970年01月01日 00点00分00秒到现在
        一共经过了多少秒... 使用float来表示
        2. 格式化时间(strftime). 这个时间可以根据我们的需要对时间进⾏任意的格式化.
        3. 结构化时间(struct_time). 这个时间主要可以把时间进⾏分类划分. 比如. 1970
        年01月01日00点00分00秒 这个时间可以被细分为年 ,月,日...一堆东西

     1 import time
     2 print(time.time()) #时间戳,给机器用的
     3 print(time.strftime("%Y/%m/%d %H:%M:%S")) #格式化时间给人看的
     4 print(time.localtime()) #结构化时间,用来计算的
     5 
     6 # 时间戳 -> 格式化时间 or 结构化
     7 import time
     8 
     9 t = time.localtime(1888888888) # 结构化时间
    10 print(t)
    11 s = time.strftime("%Y-%m-%d %H:%M:%S", t) # 格式化这个时间
    12 print(s)
    #格式化时间 ->时间戳
    import time
    s = "2029-11-09 11:21:28"

    st = time.strptime( s ,"%Y-%m-%d %H:%M:%S")
    t = time.mktime(st)
    print(t)

        日期化的标准:

     1 %y 两位数的年份表示(00-99 2 %Y 四位数的年份表示(000-9999 3 %m ⽉份(01-12 4 %d ⽉内中的⼀天(0-31 5 %H 24⼩时制⼩时数(0-23 6 %I 12⼩时制⼩时数(01-12 7 %M 分钟数(00=59 8 %S 秒(00-59 9 %a 本地简化星期名称
    10 %A 本地完整星期
    11 %b 本地简化的⽉份名称
    12 %B 本地完整的⽉份名称
    13 %c 本地相应的⽇期表示和时间表示
    14 %j 年内的⼀天(001-36615 %p 本地A.M.或P.M.的等价符
    16 %U ⼀年中的星期数(00-53)星期天为星期的开始
    17 %w 星期(0-6),星期天为星期的开始
    18 %W ⼀年中的星期数(00-53)星期⼀为星期的开始
    19 %x 本地相应的⽇期表示
    20 %X 本地相应的时间表示
    21 %Z 当前时区的名称
    22 %% %号本身

    计算时间差

    1 import time
    2 true_time = time.mktime(time.strptime("2017-09-11 08:30:00","%Y-%m-%d %H:%M:%S"))
    3 time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
    4 dif_time=time_now-true_time
    5 struct_time=time.localtime(dif_time)
    6 print(struct_time)
    7 print('过去了%d年%d⽉%d天%d⼩时%d分钟%d秒'%(struct_time.tm_year-
    8 1970,struct_time.tm_mon-1,struct_time.tm_mday-1,struct_time.tm_hour,
    9 struct_time.tm_min,struct_time.tm_sec))
    代码
    四.random模块
    所有关于随机的内容都在random模块中.
     1 import random
     2 
     3 print(random.random())  #0-1小数
     4 print(random.uniform(3,10)) #3-10小数
     5 
     6 print(random.randint(1,10)) #1-10整数
     7 print(random.randrange(1,10,2)) #1-10奇数
     8 
     9 print(random.choice([1,"周杰伦",["盖伦","胡辣汤"]])) # 列表中任意一个数
    10 print(random.sample([1,"23",[4,5]],2)) #1或者23或者[4,5])
    11 
    12 lst = [1,2,3,4,5,6,7,8]
    13 random.shuffle(lst)  #随机打乱顺序
    14 print(lst)
    random
    
    
    

    五.os模块

      所有和操作系统相关的内容都在os模块

     1 os.makedirs('dirname1/dirname2') 可生成多层递归目录
     2 os.removedirs('dirname1') 若⽬录为空,则删除,并递归到上一级目录,如若也为空,则删
     3 除,依此类推
     4 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
     5 os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中
     6 rmdir dirname
     7 os.listdir('dirname') 列出指定目录下的所有文件子目录,包括隐藏文件,并以列表方式
     8 打印
     9 os.remove() 删除一个文件
    10 os.rename("oldname","newname") 重命名文件/目录
    11 os.stat('path/filename') 获取文件/目录信息
    12 os.system("bash command") 运行shell命令,直接显示
    13 os.popen("bash command).read() 运行shell命令,获取执行结果
    14 os.getcwd() 获取当前⼯作⽬录,即当前python脚本⼯作的⽬录路径
    15 os.chdir("dirname") 改变当前脚本⼯作⽬录;相当于shell下cd
    16 # os.path
    17 os.path.abspath(path) 返回path规范化的绝对路径
    18 os.path.split(path) 将path分割成⽬录和⽂件名⼆元组返回
    19 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
    20 os.path.basename(path) 返回path最后的⽂件名。如何path以/或结尾,那么就会返回空值。
    21 即os.path.split(path)的第二个元素
    22 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
    23 os.path.isabs(path) 如果path是绝对路径,返回True
    24 os.path.isfile(path) 如果path是⼀个存在的⽂件,返回True。否则返回False
    25 os.path.isdir(path) 如果path是⼀个存在的⽬录,则返回True。否则返回False
    26 os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第⼀个绝对路径之前的参将被忽略
    27 os.path.getatime(path) 返回path所指向的⽂件或者⽬录的最后访问时间
    28 os.path.getmtime(path) 返回path所指向的⽂件或者⽬录的最后修改时间
    29 os.path.getsize(path) 返回path的⼤⼩
    30 # 特殊属性:
    31 os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    32 os.linesep 输出当前平台使⽤的⾏终⽌符,win下为"
    ",Linux下为"
    "
    33 os.pathsep 输出⽤于分割⽂件路径的字符串 win下为;,Linux下为:
    34 osname 输出字符串指示当前使⽤平台。win->'nt'; Linux->'posix'
    os模块相关

      

    os.stat()属性解读: 

     1 stat 结构:
     2 st_mode: inode 保护模式
     3 st_ino: inode 节点号。
     4 st_dev: inode 驻留的设备
     5 st_nlink: inode 的链接数。
     6 st_uid: 所有者的⽤户ID。
     7 st_gid: 所有者的组ID。
     8 st_size: 普通⽂件以字节为单位的⼤⼩;包含等待某些特殊⽂件的数据。
     9 st_atime: 上次访问的时间。
    10 st_mtime: 最后⼀次修改的时间。
    11 st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在
    12 其它系统上(如Windows)是创建时间(详细信息参⻅平台的⽂档)。
    os.stat()

    六.sys模块

      所有和python解释器相关的都在sys模块中.

    1 sys.argv 命令⾏参数List,第⼀个元素是程序本身路径
    2 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
    3 sys.version 获取Python解释程序的版本信息
    4 sys.path 返回模块的搜索路径,初始化时使⽤PYTHONPATH环境变量的值
    5 sys.platform 返回操作系统平台
    sys模块



     
     

      

  • 相关阅读:
    使用 media 实现响应式布局
    Django组件的中间件
    Django组件的cookie和 session,用户认证组件
    Django的文件上传和分页
    Ajax
    Django模型层的多表操作(2)
    Django模型层的多表操作(1)
    Django的查询表记录
    Django2.0版本的路由层和ORM但表操作
    Django的路由层,视图层和模版层
  • 原文地址:https://www.cnblogs.com/konghui/p/9756861.html
Copyright © 2020-2023  润新知