常用模块的完善 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='')

  

原文地址:https://www.cnblogs.com/changwenjun-666/p/10805603.html