collections
from collections import namedtuple 命名元祖
namedtuple('内容',['字符串'])
t = namedtuple('time_tuple',['a','b','c']) t1 = t(1,2,3) # time_tuple[a=1,b=2,c=3] print(t1.a) print(t1.b) print(t1.c) 结果: 1 2 3
from collections import Counter 计数
s = 'ssda' c = Counter(s) print(c) 结果: Counter({'s':2,'d':1,'a':1}) #计数每个字母出现的次数,自动排序
from collections import defaultdict 默认字典
dic = defaultdict(list) print(dic) 结果:# []
from collections import deque 双向队列
队列:FIFO(先进先出)
栈:LIFO(后进先出)
队列 import queue q = queue.Queue() #队列 容器 q.put('内容') #添加内容 print(q.get()) #获取内容 #队列不能查看,不能直接print(q)
栈 d = deque('内容') d.append('1') d.append('2') d.append('3') d.appendleft('4') d.appendleft('5') print(d) 结果: deque(['5','4','1','2','3'])
shelve
序列化 基于pickle实现 操作和字典的操作一样
import shelve f = shelve.open('文件') #创建文件 f['name'] = 'alex' #字典的增加 键必须是字符串 值没有要求 print(f['name']) #字典的查看 print(f.get['name']) #字典的查看 for i in f(): print(i) #查看键 for i in f.values(): print(i) #查看值 for i in f.items(): print(i) #查看键值对
要注意一种回写替换不了的情况 在文件里更改内容,但在打印的时候没有更改,需要这样处理:
f = open('文件',writeback = True) f['name'] = 'sam' #回写替换之前name的值 f.close() #如果出现了会写不成功的情况,在open写(writeback = True)
shutil
高级文件操作,可以进行剪切 赋值 删除 压缩
import shutil shutil.copyfile('要拷贝的原文件路径','要拷贝到哪的路径和新文件的名字') shutil.copyfileobj(open('文件路径')) shutil.copytree('要拷贝的递归文件','要拷贝到哪的路径和递归文件名') #递归拷贝 shutil.rmtree('要删除的文件路径') #递归删除 有文件就删 shutil.move('要移动的文件路径',移动到哪的文件夹) #递归的移动文件 相当于剪切 压缩包 shutil.make_archive('要压缩的文件名','zip',logger = logging.error(''))