day 019 常用模块

主要内容:

   1模块的简单认识

    2collection模块

    3time时间模块

 4random模块

 5os模块

 6sys模块

一  模块的简单认识

  • 引入模块的方式:

       1import (常见方式)

    2 from xxx  import 

  例子:

from collections import Iterable(可迭代的), Iterator(迭代器) 
lst
= [] print(isinstance(lst, Iterable)) # True print(isinstance(lst, Iterator)) # False

二 collection模块 (conllection模块主要封装了一些关于集合类的相关操作。比如 iterable,iterator等。除此之外 collections还提供了一些基本数据类型以外的数据集合类型。

例如:

  •           Counter
  •    deque
  •    Orderdict
  •    defaultdict
  •        namedtuple)

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

  例如 计算一个字符串中某个字符出现的次数

# 传统
s='sjkdjajdaksj'
dic={}
for el in s:
    dic[el]=dic.get(el,0)+1
print(dic) #{'s': 2, 'j': 4, 'k': 2, 'd': 2, 'a': 2}

# 牛逼的
from collections import Counter # 引入模块
s='sjkdjajdaksj'
print( Counter(s))  #Counter({'j': 4, 's': 2, 'k': 2, 'd': 2, 'a': 2})

2. deque(双向队列)

 说过这个之前先看看 什么是 :队列 (先进先出)first in first out fifo

                栈  (先进后出) first  in last out filo

# import queue
# a=queue.Queue() # 创建队列
# a.put("里鱼") #放入元素
# a.put("声卡")
# a.put('加快')
#
# print(a.get())   #里鱼       # 获取元素
# print(a.get())   # 声卡
# print(a.get())    #加快
# # print(a.get()) #         阻塞了在等下一个元素,和他一样的有 input()
  

#装馒头的桶
#入栈
#出栈
#属性 1 列表(容器)  2大小  3 栈顶指针(下一个装元素的位置)
class StackFullError(Exception):
    pass
class StackEmptyError(Exception):
    pass
class stack:
    def __init__(self,size):
        self.size=size
        self.index = 0  #栈顶指针
        self.list=[]# 容器

    def push(self,el):# 入栈
        if self.index<self.size: #没装满 判断其是否到顶了  上限
            self.list.insert(self.index,el)
            self.index+=1
        else: # 装满了   抛个异常
            raise StackFullError("the stack is full满了!")

    def pop(self):# 出栈
        if  self.index>0: #  不能低于下限
            self.index-=1
            return self.list[self.index]
        else: # 否则 抛个异常 说明这个 栈 是空的
            raise StackEmptyError("the stack is empty空了!")

#实例化栈
s=stack(6)
s.push("1")
s.push("2")
s.push("3")
s.push("4")
s.push("5")
s.push("6")
print(s.pop()) #6
print(s.pop())# 5
print(s.pop())#4
print(s.pop())#3
print(s.pop())#2
print(s.pop())#1
#print(s.pop())    #"the stack is empty空了!"  
 

接下来看queue (双向队列)

接下来看deque(双向队列)
from collections import deque # 引入模块
q=deque ()# 创建双向列表
q.append("张开")#右侧添加
q.append("李二")
q.appendleft("张三") # 左侧添加
q.appendleft("王麻子") # 左侧添加
print(q) #deque(['王麻子', '张三', '张开', '李二'])
print(q.pop()) # 右侧删除  李二
print(q.popleft())  #左侧删除  王麻子-

3 namedtuple(命名元祖) 

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

from collections import namedtuple

nt = namedtuple("point", ["x", "y"])
p = nt(1, 2)
print(p) #point(x=1, y=2)
print(p.x) #1
print(p.y) #2

4 orderdict和defaultdict (orderdict 顾名思义. 字典的key默认是⽆序的. ⽽OrderedDict是有序的)


# dic = {'a':'娃哈哈', 'b':'薯条', 'c':'胡辣汤'}
# print(dic)
# from collections import OrderedDict
# od = OrderedDict({'a':'娃哈哈', 'b':'薯条', 'c':'胡辣汤'})
# print(od)

# from collections import defaultdict
# dd = defaultdict(list) # 默认值list
# print(dd['娃哈哈']) # [] 当key不存在的时候. 会⾃动执⾏构造⽅法中传递的内容.

三 time 时间模快

import  time
print(time.time())    #   1538996895.8780088 系统时间

#此时, 我们已经获取到了系统时间, 但是这个时间....看不懂. 怎么办呢. 需要对时间进
#⾏格式化. 那这样就引出了另⼀种时间的格式. 在python中时间分成三种表现形式:

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

# 格式化时间
s=time.strftime("%Y-%m-%d %H:%M:%S")
print(s)
# ⽇期格式化的标准:
# %y 两位数的年份表示(00-99)
# %Y 四位数的年份表示(000-9999)
# %m ⽉份(01-12)
# %d ⽉内中的⼀天(0-31)
# %H 24⼩时制⼩时数(0-23)
# %I 12⼩时制⼩时数(01-12)
# %M 分钟数(00=59)
# %S 秒(00-59)
# %a 本地简化星期名称
# %A 本地完整星期名称
# %b 本地简化的⽉份名称
# %B 本地完整的⽉份名称
# %c 本地相应的⽇期表示和时间表示
# %j 年内的⼀天(001-366)
# %p 本地A.M.或P.M.的等价符
# %U ⼀年中的星期数(00-53)星期天为星期的开始
# %w 星期(0-6),星期天为星期的开始
# %W ⼀年中的星期数(00-53)星期⼀为星期的开始
# %x 本地相应的⽇期表示
# %X 本地相应的时间表示
# %Z 当前时区的名称
# %% %号本身

#结构化时间
print(time.localtime())  # 用来计算的

时间的转换:

 时间转换
# t = time.localtime(1888888888) # 结构化时间
# s = time.strftime("%Y-%m-%d %H:%M:%S", t) # 格式化这个时间
# print(s)
# 用户输入时间
s = "2020-10-01 12:18:12"
t = time.strptime(s, "%Y-%m-%d %H:%M:%S")# 转化成结构化时间
print(time.mktime(t)) # 转换成时间戳

计算时间差:

四 random模块

import random
print(random.random()) # 0-1的小数
print(random.uniform(3,11)) # 3-11的小数
print(random.randint(3,11)) # 3-11的整数
print(random.randrange(3,11,2)) # 3-11的奇数 步长是2
print(random.choice([3,'周杰伦',["盖伦",'德玛西亚']])) # 随机选一个
print(random.sample([1, '23', [4, 5],'嘻哈'], 3)) # 列表元素任意2个组合
print(random.sample(list(range(1, 37)), 7))  # 36选7

lst = [1, 2, 3, 4, 5, 6, 7, 8]
random.shuffle(lst)   # 随机打乱顺序
print(lst)

五 os模块

import os
# os.makedirs('a/b/c') #生成多层递归目录
# os.removedirs('a/b/c') # 若若⽬录为空,则删除,并递归到上⼀级⽬录,如若也为空,则删除,依此类推

# 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.chdir("dirname")# 改变当前脚本⼯作⽬录;相当于shell下cd
os.getcwd() #获取当前⼯作⽬录,即当前python脚本⼯作的⽬录路径


##  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下为"\r\n",Linux下为"\n"
# 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_atime: 上次访问的时间。
# 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 返回操作系统平台名称

  

   

猜你喜欢

转载自www.cnblogs.com/systemsystem/p/9757473.html