【问题标题】:How to delete files and create a log file of the deleted content?如何删除文件并创建已删除内容的日志文件?
【发布时间】:2020-02-24 11:42:07
【问题描述】:

我用 Python 编写了一个脚本,它将从特定目录中删除具有特定扩展名的文件。但我想知道删除了哪些文件,它们的名称应该存储在日志文件或 .txt 文件中。

例如我在'C:\SampleFolder' 位置有一个文件a.logb.log,我正在使用以下脚本从该文件夹中删除这两个文件。所以他们的名字'a.log''b.log' 应该与日期和时间一起存储在'delete.log' 文件中。

我必须在我的代码中进行哪些修改,或者我应该为此目的使用哪个函数或库?

import os, time, sys

folder_path = "C:\SampleFolder"
file_ends_with = ".log"
how_many_days_old_logs_to_remove = 7

now = time.time()
only_files = []

for file in os.listdir(folder_path):
    file_full_path = os.path.join(folder_path,file)
    if os.path.isfile(file_full_path) and file.endswith(file_ends_with):
        #Delete files older than x days
        if os.stat(file_full_path).st_mtime < now - how_many_days_old_logs_to_remove * 86400: 
             os.remove(file_full_path)
             print "\n File Removed : " , file_full_path

【问题讨论】:

  • 您需要打开日志文件进行写入,然后将每个已删除文件的名称和时间戳信息写入其中。抱歉,SO 不是代码编写服务……
  • 每个已删除的文件在for 循环内的file(以及file_full_path)中都有其名称。 os.stat() 有它的时间戳。

标签: python automation


【解决方案1】:

一种方法是向您的程序添加一个日志处理程序,然后您只需记录它而不是打印您的消息,它会包含所有必要的信息并附带所有可能对您将来进行任何修改有用的日志记录支持制作你的代码。

import logging.handlers
import logging

handler = logging.handlers.WatchedFileHandler("/path/to/storage/file/my_app.log")

# define format of the log, in this case just a date & time with the log message
formatter = logging.Formatter("%(asctime)s;%(message)s")

# attach new formratter
handler.setFormatter(formatter)

# get logger instance and update its settings
logger = logging.getLogger()
logger.setLevel("INFO")
logger.addHandler(handler)

# now just log away
logging.info("File deleted: {}".format("your_file.log"))

您可以将上述 sn-p 添加到您的程序中并从那里记录您需要的内容 - 它将写入您指定的文件。有关日志记录的更多信息,请阅读 Python docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    相关资源
    最近更新 更多