模块之collections、shutil

collections模块

from collections import 功能

1.from collections import namedtuple(命名元祖)

格式:

  from collections import namedtuple
  t = namedtuple('元祖名',[可迭代对象])

例1.1:

  from collections import namedtuple
  t = namedtuple('one_tuple',['a','b','c'])
  print(t(1,2,3))
  结果:
  one_tuple(a=1,b=2,c=3)
t1 = t(1,2,3)
print(t1.a) ---> 1 {t1.b-->2;t1.c--->3}

例1.2:(结构化时间)

  from collections import namedtuple
  t = namedtuple('time_tuple',['','','','','',''])
  t1 = t(19,1,1,1,1,1)
  结果:
  time_tuple(年=19,月=1,日=1,时=1,分=1,秒=1)
print(t1.年)-->19

2.from collections import Counter(计数器)

例2.1

from collections import Counter
s = 'abcmkkdmbdcadkmd'
c = Counter(s)
print(c)
结果: (默认按每个字母出现次数来降序排列)
Counter({'d':4,'m':3,'k':3,'a':2,'b':2,'c':2})

例2.2

dic = {}
s = 'abcmkkdmbdcadkmd'
for i in s:
    dic[i] = dic.get(i,0)+1
print(dic)

3.from collections import defaultdict(默认字典)

例3.1

from collections import defaultdict
dic = {}
dic
= defaultdict(set) print(dic['key']) --> set(),空集合

例3.2 

  有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

常规做法:
lst = [11,22,33,44,55,66,77,88,99,90]
dic = {}
for i in lst:
  if i > 66:
    dic.setdefault('k1',[]).append(i)
  else:
    dic.setdefault('k2',[]).append(i)
print(dic)
使用defaultdict

from collections import defaultdict
lst = [11,22,33,44,55,66,77,88,99,90]
dic = defaultdict(lst)
for i in lst:

  if i > 66:
    dic['k1'].append(i)
  else:
    dic['k2'].append(i)
print(dic)

 4.from collections import deque(双向队列)

d = deque()
d.append('小一')    append在末尾追加
d.append('小二')
d.append('小三')
d.append('小四')
print(d)
          结果为:deque(['小一','小二','小三','小四'])
d = deque()
d.append('小一')
d.appendleft('小二')
d.appendleft('小三')
d.append('小四')
          结果为:deque(['小三','小二','小一','小四'])

 

shutil模块

  高级文件模块,有压缩功能

import shutil
shutil.copyfile(r'拷贝的文件路径',r'要拷贝的新路径\新文件名')

第一个参数是原文件,第二个参数是要拷贝的位置

递归文件操作:

import os

import shutil

递归创建文件:  os.makedirs('a/b/c/d')

递归拷贝文件:  shutil.copytree('a/b/c/d',r'C:\Users\test/a/b/c/d')

递归删除文件:  shutil.rmtree(r'C:\Users\test')         有文件也删除

递归移动文件:  shutil.move(r'C:\Users\test\a',r'C:\Users\test1')

打压缩包:

import logging
logging.basicConfig(
  level = logging.INFO,
  format = ('%(asctime)s - %(name)a - [%(lineno)d] - %(message)s'),
      )
shutil.make_archive('压缩包名字','格式',logger = loggingerror('创建了一个--的压缩包'))
例:
shutil.make_archive('base_name','zip',logger = logging.error('创建了一个base_name.zip的压缩包'))

解包:

import zipfile

z = zipfile.Zipfile('base_name','r')

z.extractall(path = r'C:\Users\test1')    解包,所有内容

 

 

posted @ 2019-01-20 17:52  DF-包子  阅读(129)  评论(0)    收藏  举报