代码之家  ›  专栏  ›  技术社区  ›  Abdullah Chaudhry

json文件上的文件旋转和删除

  •  -1
  • Abdullah Chaudhry  · 技术社区  · 1 年前

    如何在json文件上实现fileRotation。我知道python的日志模块中有一个fileRotation处理程序,但它用于旋转和删除日志文件。 我的程序是使用json模块进行读写的,尽管我也可以使用日志模块以json形式写入文件,但我认为这不是一个好的做法。 有没有其他库我可以使用,或者我必须写自己的脚本来进行旋转和删除?

    1 回复  |  直到 1 年前
        1
  •  2
  •   Lashen Dharmadasa    1 年前

    您可以使用日志记录和json模块来实现这一点,如下所示:

    import logging
    import json
    import os
    from logging.handlers import RotatingFileHandler
    
    def rotate_json_file(file_path, max_bytes, backup_count):
        logger = logging.getLogger(__name__)
        logger.setLevel(logging.INFO)
        
        file_handler = RotatingFileHandler(file_path, mode='a', maxBytes=max_bytes, backupCount=backup_count)
        file_handler.setFormatter(logging.Formatter('%(message)s'))
    
        logger.addHandler(file_handler)
        
        json_data = {'key': 'value'}
        logger.info(json.dumps(json_data))
    
        logger.removeHandler(file_handler)
        file_handler.close()
    
        record = logging.makeLogRecord(json_data)
        
        if file_handler.shouldRollover(record):
            # Get the rotated file names
            rotated_files = [file_path] + [file_path + '.{}'.format(i) for i in range(1, backup_count + 1)]
            
            os.remove(rotated_files[-1])
    
            for i in range(len(rotated_files) - 1, 0, -1):
                os.rename(rotated_files[i - 1], rotated_files[i])
    
            open(file_path, 'a').close()