zoukankan      html  css  js  c++  java
  • 模块之random、shutil、shevle、logging

    一、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)

    结果为:

  • 相关阅读:
    web开发中禁止因为网速慢导致重复提交数据
    margin四个元素的顺序
    js阻止提交表单(post)
    js中DOM集合的动态特性
    js正则表达式中=s.g表示什么意思
    js去掉字符串前后空格的五种方法
    电脑结构和CPU、内存、硬盘三者之间的关系
    mysql——查询练习
    python基础知识14——I/O阻塞非阻塞,同步异步
    Redis主从数据库的安装及主从配置
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/10692817.html
Copyright © 2011-2022 走看看