【问题标题】:How to remove 6 month before logs using python script如何使用python脚本删除日志前6个月
【发布时间】:2021-09-11 17:45:01
【问题描述】:

我有Logs_26052021.tar.xz 描述:26052021--> date: 26, month: 05, year: 2021

并希望使用 python 脚本从位置永久删除此类文件。 它在 Unix 服务器上,版本:Linux localhost 3.10.0-1160.21.1.el7.x86_64

我该怎么办。

提前致谢

【问题讨论】:

    标签: python linux unix logging


    【解决方案1】:

    使用适当的方法分离。在 python 3.9.6 上测试

    import os
    from datetime import datetime
    
    
    def get_files_from_path(path: str) -> list:
        result = []
        for subdir, dirs, files in os.walk(path):
            for filename in files:
                filepath = subdir + os.sep + filename
                if filename.startswith('Logs_') and filename.endswith('.tar.xz'):
                    result.append(filepath)
        return result    
    
    
    def get_old_files(filelist: list, max_days=184) -> list:
        currentdate = datetime.now()
        result = []
        for file in filelist:
            datestr = file.split('Logs_')[1].split('.tar.xz')[0]
            filedate = datetime.strptime(datestr, '%d%m%Y')
            tdelta = currentdate - filedate
            if tdelta.days > max_days:
                result.append(file)
        return result
    
    
    def delete_files(filelist: list):
        for file in filelist:
            os.remove(file)
    
    
    logfiles = get_files_from_path('testing')
    oldfiles = get_old_files(logfiles)
    
    delete_files(oldfiles)
    

    相关文档:

    1. Iterate over files
    2. strptime behavior
    3. timedelta for substraction of dates
    4. File deletion

    【讨论】:

    • 这是传统的python方式,寻找我们可以用python执行的unix命令来删除6个月大的文件
    • 我不确定我是否在关注你。你要求一个 python 脚本,然后你在这里说你想要一个 *nix 命令。你要哪个?相应地更新您的问题和标签...
    【解决方案2】:

    找到答案,

    find /path/Logs/ -name "*.log.*" -type f -mtime +180
    

    但在执行此命令时,会为 "*.log.*" 获取 SyntaxError: invalid syntax

    我应该如何使用 python 执行这个?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 2023-03-26
      • 2021-05-24
      • 2015-08-12
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多