zoukankan      html  css  js  c++  java
  • 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(''))
  • 相关阅读:
    [Poi2000]病毒
    [Zjoi2015]诸神眷顾的幻想乡
    P1663 山
    P1837 单人纸牌
    P6584 重拳出击
    CF460C Present
    10.5 学习笔记
    多项式学习笔记(一) FFT
    NOIP 2020 游记
    uva 经典习题选做(dp专项)
  • 原文地址:https://www.cnblogs.com/sandy-123/p/10300326.html
Copyright © 2011-2022 走看看