zoukankan      html  css  js  c++  java
  • 常用模块的完善 random shutil shevle 三流 logging

    流:简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。
    
    在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,
    程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向。
    流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。
    

      

    random 模块
    
    import random
    item=[1,2,3,4,5]
    
    for i in range(5):
        print(random.random())   #产生(0-1)之间的任意1个小数
        print(random.randint(1,5)) #产生[1-5]之间任意一个整数
        print(random.randrange(1,5)) #产生[1-5)之间任意一个整数
        print(random.uniform(1,5))    #产生(1-5)之间任意一个小数
        print(random.choice(item))    #单列集合随机选择一个
        print(random.sample(item,3))    #单列集合随机选择3个,类型为list
        random.shuffle(item)             #洗牌单列集合 将之前的集合内元素顺序随机打乱
        print(item)
    
    #产生指定位数的验证码,可以满足一定的逻辑需求
    def random_code(count):
        code=''
        for i in range(count):
            num=random.choice([1,2,3])
            if num==1:  #该位是数字
                code+=str(random.randint(0,9))  #字符串拼接只能由字符串拼接
            elif num==2: #该位为大写字母
                code+=chr(random.randint(65,90))   #在Ascii里65-90是大写字母
            else:  #该位为小写字母
                code+=chr(random.randint(97,122))  #在Ascii里97-122是小写字母
        return code
    print(random_code(10))
    

      

    shutil模块:可以操作权限的处理文件模块内
    import shutil
    
    小点:当所操作的文件夹(文件)对象与自执行的文件不在同一个目录下面时,需要加上绝对路径!!!
    
    # 1、基于路径的文件复制,被复制的文件可以不存在
    shutil.copyfile('source_file','targe_file')
    
    #2、基于流的文件复制
    with open('source_file','rb')as f,open('targe_file','wb')as w:
        shutil.copyfileobj(f,w)
    #将文件source_file的内容 复制给文件targe_file
    
    #3、递归删除目标文件夹下面的空目录
    shutil.rmtree('targe_folder')
    
    #4、文件移动
    shutil.move('old_file','new_file')
    #将old_file整体移到同目录下的new_file里,new_file可以不存在,会自动创建
    
    #5、文件夹压缩
    shutil.make_archive('file_name','format','archive_path')
                        # ('压缩后的名称','格式','要压缩的路径')
    #6、解压缩 
    shutil.unpack_archive(r'unpack_file','unpack_name','format')
                        # ('解压的路径','解压后的位置','解压的格式')
    #存在压缩,必然存在解压缩,需要注意压缩包在前,需要加上r,解压缩包在中间,格式最后
    

      

    shelve模块:可以用字典存取数据到文件的序列化模块
    
    #将序列化的文件操作dump与load进行封装
    import shelve
    s_dic = shelve.open("text.py",writeback=True)
    #writeback允许序列化的可变类型,可以直接修改值
    #序列化存:
    s_dic['key1']='value1'
    s_dic['key2']='value2'
    #反序列化:取
    print(s_dic['key1'])  #value1
    #文件的释放
    s_dic.close()
    

      

    三流:系统标准标准输入|输出|错误流
    
    #三者都不会主动换行
    import sys
    sys.stdout.write('123') #类似于print('msg',end='')
    print('123',end='')     #123123  两个语句都不会主动换行
    
    sys.stderr.write('错误信息')
    sys.stderr.write('错误信息
    ') #加上换行符可以实现换行
    
    res=sys.stdin.read(3) #空格代表一个字符,参数3代表打印出来的字符数
    print(res)   #不添加参数,会一直默认输入
    res=sys.stdin.readline() #输入一行字符,输出结果同样为一行字符
    print(res)

    #小点:print默认是对sys.stdout.write('msg')+sys.stdout.write('
    ')的封装
    #格式化结束符 print:print('msg',end='')

      

  • 相关阅读:
    codeforce842c Ilya And The Tree
    UVA11825 Hackers' Crackdown
    UVA10635 Prince and Princess
    hihocoder1327 分隔相同字符贪心
    2018 Multi-University Training Contest 3 1003 / hdu6321 Problem C. Dynamic Graph Matching 状压dp
    2018 Multi-University Training Contest 3 1001 / hdu6319 Problem A. Ascending Rating 单调队列,思维
    第十四届华中科技大学程序设计竞赛决赛同步赛
    The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple / ZOJ4027 Sequence Swapping dp递推
    gym101485G/BZOJ4430 Guessing Camels赌骆驼 树状数组或CDQ分治
    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 Clever King 最大权闭合子图
  • 原文地址:https://www.cnblogs.com/changwenjun-666/p/10805603.html
Copyright © 2011-2022 走看看