collections-shelve-shutil

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(''))

 

posted @ 2019-01-21 18:33  Sandy-123  阅读(119)  评论(0编辑  收藏  举报