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