一、random 模块
2.1 random 常用方法
import random print(random.random())#(0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3)) #[1,3] 大于等于1且小于等于3之间的整数 print(random.randrange(1,3)) #[1,3) 大于等于1且小于3之间的整数 print(random.choice([1,'23',[4,5]]))#1或者23或者[4,5] print(random.choices([1,2,3], weights = [1,1,2], k=3)) # 得到[1]或[2]的概率为25%,获得[3]的概率为50%,3表示选取次数 print(random.sample([1,'23',[4,5]],2))#列表元素任意2个组合 print(random.uniform(1,3))#大于1小于3的小数,如1.927109612082716 item=[1,3,5,7,9] random.shuffle(item) #打乱item的顺序,相当于"洗牌" print(item)
2.2 random的应用---随机验证码
import random # 随机验证码 def random_code(size=4): code = "" for i in range(size): alp_up = chr(random.randint(65,90)) # chr将int类型与ASCII对应取值 alp_low = chr(random.randint(97,122)) num = str(random.randint(0,9)) # 第二个列表weights=[]中存放各元素权重,k为选取次数.返回值为列表 single_code = random.choices([alp_low,alp_up,num],weights=[1,1,2],k=2) code += single_code[0] return code print(random_code())
二、os 模块
2.1 os的内置方法
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字符串名:('..') os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件 os.rename("oldname","newname") 重命名文件/目录 os.stat('path/filename') 获取文件/目录信息 os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/" os.linesep 输出当前平台使用的行终止符,win下为" ",Linux下为" " os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' os.system("bash command") 运行shell命令,直接显示 os.environ 获取系统环境变量 os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) 如果path是绝对路径,返回True os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 os.path.getsize(path) 返回path的大小
2.2 一般应用
import os # 获取某一个文件夹下所有的子文件以及子文件夹的名字 res=os.listdir(r"D:Python预科班day06") # 返回子文件及子文件夹名字的列表 print(res) # ['作业.py', '字符串操作.py', '录屏讲解.py', '测试.py', '进制转换.py'] # # # 获取文件大小 size=os.path.getsize(r'/Users/linhaifeng/PycharmProjects/s14/day22/01 时间模块.py') print(size) os.remove() 删除一个文件 os.rename("oldname","newname") 重命名文件/目录 # 可调用os下的系统指令 os.system("dir") os.system("ipconfig") os.system("cls") # 添加环境映射 environ:字符串所对应环境的映像对象 # 规定:key与value必须都为字符串 os.environ['aaaaaaaaaa']='111' print(os.environ) # 文件名称以及文件所在文件夹路径 print(os.path.dirname(r'/a/b/c/d.txt')) # /a/b/c 打印路径所在的文件夹 print(os.path.basename(r'/a/b/c/d.txt')) # d.txt 打印该文件名 # 判断是否是文件夹或文件 print(os.path.isfile(r'笔记.txt')) print(os.path.isfile(r'aaa')) print(os.path.isdir(r'aaa')) print(os.path.join('a','/','b','c','d')) # 推荐用这种 BASE_DIR=os.path.dirname(os.path.dirname(__file__)) # print(BASE_DIR) # 规范化路径 os.path.normpath 只在Windows下有用,linux下会原样返回 BASE_DIR=os.path.normpath(os.path.join( __file__, '..', '..' )) print(BASE_DIR) # D:homeworkday21 # 在python3.5之后,推出了一个新的模块pathlib from pathlib import Path # .parent找到当前文件的父文件夹路径 res = Path(__file__).parent.parent print(res) # 组合路径 类似os.path.join res=Path('/a/b/c') / 'd/e.txt' # acde.txt print(res) # 绝对路径,返回res的绝对路径 print(res.resolve())
三、 sys 模块
1 sys.argv 命令行参数List,第一个元素是程序本身路径 2 sys.exit(n) 退出程序,正常退出时exit(0) 3 sys.version 获取Python解释程序的版本信息 4 sys.maxint 最大的Int值 5 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 6 sys.platform 返回操作系统平台名称
打印进图条小例子:
#=========知识储备========== #进度条的效果 [# ] [## ] [### ] [#### ] #指定宽度 print('[%-15s]' %'#') print('[%-15s]' %'##') print('[%-15s]' %'###') print('[%-15s]' %'####') #打印% print('%s%%' %(100)) #第二个%号代表取消第一个%的特殊意义 #可传参来控制宽度 print('[%%-%ds]' %50) #[%-50s] print(('[%%-%ds]' %50) %'#') # "[%%-%ds]" %50 ---> ([%-50s]) %"#" print(('[%%-%ds]' %50) %'##') print(('[%%-%ds]' %50) %'###') #=========实现打印进度条函数========== import sys import time def progress(percent,width=50): if percent >= 1: percent=1 show_str=('[%%-%ds]' %width) %(int(width*percent)*'#') print(' %s %d%%' %(show_str,int(100*percent)),file=sys.stdout,flush=True,end='') #=========应用========== data_size=1025 recv_size=0 while recv_size < data_size: time.sleep(0.1) #模拟数据的传输延迟 recv_size+=1024 #每次收1024 percent=recv_size/data_size #接收的比例 progress(percent,width=70) #进度条的宽度70
四、shutil 模块
详情参考egon老师的博客:https://www.cnblogs.com/linhaifeng/articles/6384466.html#_label5