zoukankan      html  css  js  c++  java
  • 模块之shutil、shelve、configparser、logging等相关内容-22

    1.shutil 模块

    import shutil

    # shutil.move('aaa','eee') #如果不存在eee文件夹,且在同目录下,将aaa改名至eee

    # shutil.move('eee','bbb') # 如果有bbb文件夹,将eee移动至bbb文件夹

    # 压缩
    res = shutil.make_archive(r'C:UsersUsherDesktop全栈15期day22压缩包','gztar',root_dir=r'C:UsersUsherDesktop全栈15期day22')
    # 括号中的元素 第一个是压缩后压缩包的名字,第二个是压缩格式,第三个是需要压缩的文件夹


    # 解压

    res = shutil.unpack_archive(r'压缩包.tar.gz','bbb','gztar')
    # 括号中的元素 第一个是需要解压的文件的路径,第二个是需要解压到的文件目录,第三个是格式

    ### 总结
    import shutil
    shutil.make_archive(压缩后的名字及路径,压缩格式,需要压缩的文件路径)
    shutil.unpack_archive(需要解压的文件路径,解压到的文件目录,解压格式)

    import tarfile

    # 此方式为解压
    t=tarfile.open('压缩包.tar.gz','r')
    # 括号中的元素 第一个是需要解压的压缩包 第二个是读取方式
    t.extractall('.')
    # 括号中写的是需要解压到的路径,如果是本文件夹下就是'.'
    t.close()

    2.shelve 模块

    import shelve

    # 序列化用 python专用 格式 .shl 通过字典的方式序列化

    f = shelve.open('db.shl')

    f['info'] ={'name':'egon','age':18}

    print(f['info'])
    # {'name': 'egon', 'age': 18}
    print(f['info']['name'])
    # egon

    f.close()

    3.configparser 模块

    import configparser
    # 此模块为调用查看配置文件所用

    config = configparser.ConfigParser()
    config.read('cfg.ini') # 配置文件在下方

    res = config.sections() # 查看配置标题
    print(res)
    # ['log']

    res = config.options('log') # 按照标题查看键值对中的键
    print(res)
    # ['v']

    res = config.items('log') # 按照标题查看键值对
    print(res)
    # [('v', '1')]

    res = config.get('log','v') # 按照标题和键值对中的键获取键值对中的值
    print(res,type(res))
    # 1 <class 'str'>

    res1 = config.getint('log','v') # 键值对的值可以直接被获取成为数字,浮点数和布尔值类型
    res2 = config.getfloat('log','v')
    res3 = config.getboolean('log','v')
    print(res1,type(res1))
    # 1 <class 'int'>
    print(res2,type(res2))
    # 1.0 <class 'float'>
    print(res3,type(res3))
    # True <class 'bool'>
    # cfg.ini

    [log]
    v=1

    4.logging 模块

    import logging

    # # # 一:日志配置   基础的日志配置
    # logging.basicConfig(
    #     # 1、日志输出位置:1、终端 2、文件
    #     filename='access.log', # 不指定,默认打印到终端
    #
    #     # 2、日志格式
    #     format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
    #               时间           日志名称     提示级别       调用日志输出的模块名称   日志内容
    #
    #     # 3、时间格式
    #     datefmt='%Y-%m-%d %H:%M:%S %p',
    #
    #     # 4、日志级别
    #     # critical => 50
    #     # error => 40
    #     # warning => 30
    #     # info => 20
    #     # debug => 10
    #     level=30,

    #
    # logging.debug('1111')
    # logging.info('2222')
    # logging.warning('33333')
    # logging.error('4444')
    # logging.critical('5555')
    # #

    # 二、日志配置字典   常用字典方法配置   settings文件在下方
    import logging.config
    import settings

    logging.config.dictConfig(settings.LOGGING_DIC)
    logger1 = logging.getLogger('用户信息') # 此括号内的元素 为 日志格式中 %(name)s 项目
    logger1.info('这是日志的真正内容')

    logger2 = logging.getLogger('如果日志配置字典(settings.LOGGING_DIC[“loggers”])中没有本项目,就使用“ ”的哪一个条目,相当于日子名称变更,但是内容不变')
    logger2.info('这是日志的真正内容')
    # settings.py

    """
    logging配置
    """

    import os

    # 1、定义三种日志输出格式,日志中可能用到的格式化串如下
    # %(name)s Logger的名字
    # %(levelno)s 数字形式的日志级别
    # %(levelname)s 文本形式的日志级别
    # %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
    # %(filename)s 调用日志输出函数的模块的文件名
    # %(module)s 调用日志输出函数的模块名
    # %(funcName)s 调用日志输出函数的函数名
    # %(lineno)d 调用日志输出函数的语句所在的代码行
    # %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
    # %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
    # %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    # %(thread)d 线程ID。可能没有
    # %(threadName)s 线程名。可能没有
    # %(process)d 进程ID。可能没有
    # %(message)s用户输出的消息

    # 2、强调:其中的%(name)s为getlogger时指定的名字
    #### # # logger1=logging.getLogger('用户交易') 此句为调用日志输出函数的文件中(模块)所有,仅展示
    standard_format = '%(asctime)s - %(name)s - %(filename)s:%(lineno)d - %(levelname)s - %(message)s'
    # 此日志格式可以自定义

    simple_format = '%(asctime)s - %(levelname)s - %(message)s'

    # test_format = '%(asctime)s] %(message)s'

    # 3、日志配置字典
    LOGGING_DIC = {
       'version': 1, #暂时不管
       'disable_existing_loggers': False, #暂时不管
       # 下方为日志格式 formatters 可以有多个
       'formatters': {
           # 此大字典的键值对中的键可以为任意值,值为实际配置 standard / simple
           'standard': {
               # 字典中键值对的键为固定搭配,不可修改,值为之前设置的日志格式
               'format': standard_format
          },
           'simple': {
               'format': simple_format
          },
      },
       'filters': {},
       # 下方为日志输出位置 handlers 可以有多个
       'handlers': {
           #打印到终端的日志
           # 此大字典的键值对中的键可以为任意值,值为实际配置 console / file1 / file2
           'console': {
               # # 字典中键值对的键为固定搭配,不可修改,值为之前设置的日志配置
               'level': 'DEBUG',
               'class': 'logging.StreamHandler',  # 打印到屏幕
               'formatter': 'simple'
          },
           #打印到文件的日志,收集info及以上的日志
           'file1': {
               'level': 'DEBUG',
               'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,日志轮转
               'formatter': 'standard',
               # 可以定制日志文件路径
               # BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # log文件的目录
               # LOG_PATH = os.path.join(BASE_DIR,"log",'a1.log')
               'filename': 'a1.log',  # 日志文件
               'maxBytes': 1024 * 1024 * 5,  # 日志大小 5M   单位都是字节 每到这个大小就进行一次轮转(产生新文件)
               'backupCount': 5, # 最多轮转的次数,超过此次数最早的文件就被删掉了
               'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
          },
           'file2': {
               'level': 'DEBUG',
               'class': 'logging.FileHandler',  # 保存到文件
               'formatter': 'standard',
               'filename': 'a2.log',
               'encoding': 'utf-8',
          },
      },
       # 下方为日志的配置 loggers 可以有多个
       'loggers': {
           #logging.getLogger(__name__)拿到的logger配置
           # '': {
           #     'handlers': ['default', 'console'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
           #     'level': 'DEBUG', # loggers(第一层日志级别关限制)--->handlers(第二层日志级别关卡限制)
           #     'propagate': False, # 默认为True,向上(更高level的logger)传递,通常设置为False即可,否则会一份日志向上层层传递
           # },
           '用户交易': {
               'handlers': ['file1','console'],
               'level': 'DEBUG',
               'propagate': False,
          },
           '': {
               'handlers': ['file1','console'],
               'level': 'DEBUG',
               'propagate': False,
          },

      },
    }

     

  • 相关阅读:
    Java 抽象类
    Java final 关键字
    Java 异常机制
    hashcode和equals
    DevExpress 柱状图
    Windows X64平台搭建Java开发环境
    J2EE 学习路线
    winform 客户端采用HTTP协议与服务端通信
    C# 处理Json
    性能分析工具 DotTrance
  • 原文地址:https://www.cnblogs.com/usherwang/p/13413543.html
Copyright © 2011-2022 走看看