博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

常用模块

Posted on 2019-01-02 21:12  GraceNana  阅读(174)  评论(0编辑  收藏  举报

引入模块的方式:

  1. import 模块

  2. from xxx import 模块

collections模块

1.Counter  计数器

from collections import Counter
s = 'apple pineapple'
nb = Counter(s)    #Counter({'p': 5, 'e': 3, 'a': 2, 'l': 2, ' ': 1, 'i': 1, 'n': 1}) 

2.deque 双向队列(栈.队列)

  1)栈 : FILO.先进先出

  2)队列 : FIFO.先进先出

栈Stack

class StackEmptyError(Exception):
    pass
class StackFullError(Exception):
    pass
class Stack:

    def __init__(self. size):
        self.top = 0    #栈顶指针
        self.size = size  
        self.lst = []      #存放数据的列表
    
    def push(self):
        if self.top >= self.size:
            raise StackFullException('your stack is full')
        self.lst.insert(self.top, el)
        self.top +=1
    def pop(self):
        if self.top == 0:
            raise StackEmptyException('your stack is empty')
        self.top-=1
        el = self.lst[self.top]
        return el  

 queue模块

import queue
q = queue.Queue()
q.put('a')
q.put('b')
q.put('c')
print(q)    #<queue.Queue object at 0x01C49C10>
print(q.get())   #a

deque

from collections import deque
q = deque()
q.append('a')   #右侧添加
q.append('b')
q.appendleft('c')  #左侧添加
q.appendleft('d')
print(q)               #deque(['d', 'c', 'a', 'b'])
q.pop()             #deque(['d', 'c', 'a'])
q.popleft()            #deque(['c', 'a'])
print(q.pop())       #a

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

OrderedDict和defaultdict

字典的key默认是无序的.而OrderedDict是有序的(和普通字典操作一样,打印效果不同)

from collections import OrderedDict
od = OrderedDict({'b' : 'boy','c' : 'carry', 'a' : 'apple'})
print(od)   #OrderedDict([('b', 'boy'), ('c', 'carry'), ('a', 'apple')])

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

from collections import defaultdict
dd = defaultdict(list)
print(dd['a'])     #[]

time模块***

 

时间的三种形式:

1.时间戳(timestamp).从1970年01月01日00点00分00秒开始,使用float来表示

2.格式化时间(strftime).根据需要对时间进行任意格式化

 

3.结构化时间(struct_time).把时间分类划分

日期格式化的标准:

%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 当地时区的名称
%% %号本身

时间戳

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

结构化时间

st = time.time()
t = time.localtime(st)
print(t)    #time.struct_time(tm_year=2019, tm_mon=1, tm_mday=3, tm_hour=20, tm_min=58
, tm_sec=21, tm_wday=3, tm_yday=3, tm_isdst=0)

格式化时间

s = time.strftime('%Y-%m-%d %H:%M:%S',t)
print(s)     #2019-01-03 21:01:58

用户输入一个时间,转化为时间戳:

s1 ='2019-01-03 21:01:58'     #输入的时间
t1 = time.strptime(s1, '%Y-%m-%d %H:%M:%S')   #转化成结构时间
st1 = time.mktime(t1)    #转换成时间戳
print(st1)                      #1546520518.0

random随机模块

import random
random.random()    #0-1小数
random.uniform(3, 10)    #3-10小数
random.randint(1, 10)    #1-10整数
random.randrange(1, 10, 2)  #1-10奇数[1,10)
random.choice(['a','b','c']) #选择一个
random.sample(['a','b','c'], 2) #列表列出任意两个组合
l = ['a', 'b', 'c']
random.shuffle(l)  #列表随机打乱顺序

os模块

os.makedirs('dirname1/dirname2')   #可生成多层递归目录
os.removedirs('dirname1')   #若目录为空,则删除,并递归到上一级目录,如若为空,则删除,依此类推
os.mkdir('dirname')   #生成单级目录
os.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.abspath(path)  #返回规范化的绝对路径
os.path.split(path)  # 将path分割成目录和文件名二元组返回
os.path.dirname(path)  #返回path的目录
os.path.basename(path)  #返回path最后的文件名
os.path.exists(path)    #如果path存在,返回True 如果path不存在,返回False
os.path.isabs(path)     #如果path是绝对路径,返回True
os.path.isfile(path)     #如果path是一个存在的文件,返回True
os.path.isdir(path)      #如果path是一个存在的目录,则返回True
os.path.join(path1[, path2[, ...]])   #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  #返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path)   #返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path)   #返回path的大小

sys模块

sys.exit(n)  #退出程序,正常退出时exit(0),错误退出时sys.exit(1)