• logging模块,shutil模块


    logging模块

    用于便捷记录日志且线程安全的模块

    1、单文件日志

    import logging
    
    logging.basicConfig(filename='文件名.log',
                        format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
                        # 日志时间-用户名(root..)-日志等级名称-来源:日志信息
                        datefmt='%Y-%m-%d %H:%M:%S %p',     # 时间格式
                        level=10)   # 只将等级大于等于10的日志记录到文件中,建议写成level=logging.DEBUG这种形式
    
    """
    日志等级:
    
    CRITICAL = 50
    FATAL = CRITICAL
    ERROR = 40
    WARNING = 30
    WARN = WARNING
    INFO = 20
    DEBUG = 10
    NOTSET = 0
    """
    
    logging.debug('debug')
    logging.info('info')
    logging.warning('warning')
    logging.error('error')
    logging.critical('critical')
    
    # 上面所有的命令实际上都是调用的下面代码
    logging.log(10, 'log')
    

    2、多文件日志

    对于上述记录日志的功能,只能将日志记录在单文件中,如果想要设置多个日志文件,logging.basicConfig将无法完成,需要自定义文件和日志操作对象。

    import logging
    
    # 定义文件
    file_1_1 = logging.FileHandler('l1_1.log', 'a', encoding='utf-8')
    # 定义格式
    fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s")
    # 应用格式
    file_1_1.setFormatter(fmt)
    
    
    file_1_2 = logging.FileHandler('l1_2.log', 'a', encoding='utf-8')
    fmt = logging.Formatter()
    file_1_2.setFormatter(fmt)
    
    # 定义日志等级
    logger1 = logging.Logger('s1', level=logging.ERROR)
    # 添加日志等级
    logger1.addHandler(file_1_1)
    logger1.addHandler(file_1_2)
    
    
    # 写日志
    logger1.critical('1111')
    

    shutil模块

    高级的 文件、文件夹、压缩包 处理模块

    shutil.copyfileobj(fsrc, fdst[, length])
    将文件内容拷贝到另一个文件中

    shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))
    

    shutil.copyfile(src, dst)
    拷贝文件

    shutil.copyfile('f1.log', 'f2.log')
    

    shutil.copymode(src, dst)
    仅拷贝权限。内容、组、用户均不变

    shutil.copymode('f1.log', 'f2.log')
    

    shutil.copystat(src, dst)
    仅拷贝状态的信息,包括:mode bits, atime, mtime, flags

    shutil.copystat('f1.log', 'f2.log')
    

    shutil.copy(src, dst)
    拷贝文件和权限

    shutil.copy('f1.log', 'f2.log')
    

    shutil.copy2(src, dst)
    拷贝文件和状态信息

    shutil.copy2('f1.log', 'f2.log')
    

    shutil.ignore_patterns(*patterns)
    shutil.copytree(src, dst, symlinks=False, ignore=None)
    递归的去拷贝文件夹

    shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
    # 忽略.pyc和.tmp文件
    

    shutil.rmtree(path[, ignore_errors[, onerror]])
    递归的去删除文件

    shutil.rmtree('folder1')
    

    shutil.move(src, dst)
    递归的去移动文件,它类似mv命令,其实就是重命名。

    shutil.move('folder1', 'folder3')
    

    shutil.make_archive(base_name, format,...)

    创建压缩包并返回文件路径,例如:zip、tar

    创建压缩包并返回文件路径,例如:zip、tar

    • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
    • 如:压缩包文件名                        =>保存至当前路径
    • 如:/usr/压缩包文件名            =>保存至/usr/目录下
    • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
    • root_dir: 要压缩的文件夹路径(默认当前目录)
    • owner: 用户,默认当前用户
    • group: 组,默认当前组
    • logger: 用于记录日志,通常是logging.Logger对象
    #将 /usr/test 下的文件打包放置当前程序目录
    import shutil
    ret = shutil.make_archive("压缩后文件名", 'gztar', root_dir='/usr/test')
      
      
    #将 /bin 下的文件打包放置 /usr/ 目录下
    import shutil
    ret = shutil.make_archive("/usr/压缩后文件名", 'gztar', root_dir='/bin')
    
  • 相关阅读:
    eclipse——插件报错:Could not find node.js
    常用css设置
    前端跨域常见的处理方法
    刷新建设批次为空的sql
    PostgreSQL 添加字段语句
    查询在A表有记录数据,B表没有记录数据的SQL
    postgreSql 备份复制表结构和数据 SQL语句
    删除site_planning_id 和version 重复的,如果有多个版本,留下版本号最高的
    leetcode 精选top面试题
    leetcode 精选top面试题
  • 原文地址:https://www.cnblogs.com/x54256/p/8297784.html
Copyright © 2020-2023  润新知