一、random 模块:随机数
1、part1
import random 1、[1,10]整数 random randint(1,10) print(random.randint(1, 10)) # 随机产生[1,10]中的一个数 2、(0,1)小数 random.random() print(random.random()) 3、[1,10)整数 random.randrange(1,10) print(random.randrange(1, 10)) 4、(1,10)小数 random.uniform(1,10) print(random.uniform(1,10)) print(random.choice([1,2,3])) # 单例集合随机选择1个 print(random.sample([1,2,3,4,5,6],2)) # 单例集合随机选择n个 5、洗牌random.shuffle ls=[0,1,2,3,4,5,6] random.shuffle(ls) print(ls)
2、案例
产生指定位数的验证码 import random def random_code(count): code ='' for i in range(count): num = random.randint(1,3) if num == 1: tag = str(random.randint(0,9)) elif num == 2: tag = chr(random.randint(65,90)) else : tag = chr(random.randint(97,122)) code += tag return code print(random_code(6))
二、shutil 模块:可以操作权限的处理文件模块
import shutil 1、基于路径的文件复制 shutil.copyfile(r'D:SH-fullstack-s3day18part1.py','bb') 2、基于流的文件复制 with open('c.py','rb') as r ,open('d.py','wb') as w: shutil.copyfileobj(r,w) 3、递归删除目标目录 shutil.rmtree('a') 4、文件移动 shutil.move('d.py','dd.py') 5 文件夹压缩 shutil.make_archive('aaaa','zip',r'D:SH-fullstack-s3day18part1') 6、文件夹解压 shutil.unpack_archive(r'D:SH-fullstack-s3day18part1aaaa.zip','aaaaaa','zip')
三、shevle 模块:可以用字典存取数据到文件的序列化模块
import shelve 将序列化文件操作dump与load进行封装 s_dic = shelve.open("target.txt") # 注:writeback=True操作数据会同步写到文件
序列化::存 s_dic['key1'] = [1, 2, 3, 4, 5] s_dic['key2'] = {'name': 'Bob', 'age': 18} s_dic['key3'] = 'abc'
文件释放 s_dic.close() s_dic = shelve.open("target.txt", writeback=True) print(s_dic['key1']) s_dic['key1'][2] = 30 print(s_dic['key1']) print(s_dic['key2']) s_dic['key2']['age'] = 300 print(s_dic['key2']) print(s_dic['key3']) s_dic['key3'] = 'def' print(s_dic['key3']) s_dic.close()
四、三流:系统标准输入流 | 输出流 | 错误流
import sys 1、系统标准输入流 sys.stdout.write('123') # print('msg',end='') sys.stdout.write('1234') # == print() 结果为 1231234 sys.stdout.write('123 ') sys.stdout.write('1234') 结果为 12312342、系统标准输出流 res = sys.stdin.read(3) print(res) res = sys.stdin.readline() print(res) 3、系统标准错误流 sys.stderr.write('错误信息 ') sys.stderr.write('错误信息') sys.stderr.write('错误信息') 结果为 错误信息 错误信息错误信息
五、logging
1、logging模块是python提供的用于记录日志的模块
2、日志级别:五个级别,从高到低
info:常规信息 10
debug:调试信息 20
warning:警告信息 30
error:错误信息 40
cretical:严重错误 50
3、logging模块的四个核心角色
Logger:日志生长器,产生日志
Fitler:日志过滤器,过滤日志
Handler:日志处理器,对日志进行格式化,并输出到指定位置(控制台或文件)
Formater:处理日志的格式
4、通过字典配置日志模块(重点)
六、xlrd与xlwt
1、xlrd
read.xslx表格:
import xlrd import xlwt import os class ExcelRead(object): def __init__(self, excel_name, sheet_name): self.path = os.path.join(os.path.join(os.path.dirname(__file__), "upload"), excel_name) self.data = xlrd.open_workbook(self.path) # 打开指定的excel文件 self.table = self.data.sheet_by_name(sheet_name) # 找到指定的sheet页 self.rows = self.table.nrows # 获取总行数 self.cols = self.table.ncols # 获取总列数 def data_dict(self): if self.rows <=1: print('总行数小于等于1', end='') print(self.path) return False else: keys = self.table.row_values(0) # 将列表的第一行设置为字典的key值 data = [] for i in range(1, self.rows): dict = {} for j in range(0, self.cols): dict[keys[j]] = self.table.row_values(i)[j] data.append(dict) return data if __name__ == '__main__': start = ExcelRead('xlrd.xlsx', u'read') data = start.data_dict() for i in range(len(data)): print(data[i])
结果为:
2、xlwt
excel_path = os.path.join(os.path.join(os.path.dirname(__file__), "upload"), 'xlwt.xlsx') class ExcelWrite(object): def __init__(self): self.excel = xlwt.Workbook() # 创建一个工作簿 self.sheet = self.excel.add_sheet('Sheet4') # 创建一个工作表 # 写入单个值 def write_value(self, cell, value): ''' - cell: 传入一个单元格坐标参数,例如:cell=(0,0),表示修改第一行第一列 ''' self.sheet.write(*cell, value) # (覆盖写入)要先用remove(),移动到指定路径,不然第二次在同一个路径保存会报错 os.remove(excel_path) self.excel.save(excel_path) # 写入多个值 def write_values(self, cells, values): ''' - cells: 传入一个单元格坐标参数的list, - values: 传入一个修改值的list, 例如:cells = [(0, 0), (0, 1)],values = ('a', 'b') 表示将列表第一行第一列和第一行第二列,分别修改为 a 和 b ''' # 判断坐标参数和写入值的数量是否相等 if len(cells) == len(values): for i in range(len(values)): self.write_value(cells[i], values[i]) else: print("传参错误,单元格:%i个,写入值:%i个" % (len(cells), len(values))) if __name__ == '__main__': start = ExcelWrite() cells1 = [(0, 0), (0, 1)] values1 = ('飞猪', '哈哈') start.write_values(cells1, values1)
结果为: