import os
LOG_DIRECTORY = r"C:\Users\Bobson Dugnutt\Log Files"
logfiles = [fn for fn in os.listdir(LOG_DIRECTORY)
if "POST_DATE.SQL" in fn and fn.endswith(".log")]
newest_logfile = max(logfiles, key=lambda fn:fn.rsplit(".", maxsplit=2)[1])
print("Newest log file:", newest_logfile)
if len(logfiles) > 1:
for filename in logfiles:
if filename != newest_logfile:
print("Deleting old log file:", filename)
#os.remove(filename) # Uncomment this line
import os
LOG_DIRECTORY = r"C:\Users\Bobson Dugnutt\Log Files"
logfiles = [fn for fn in os.listdir(LOG_DIRECTORY)
if "POST_DATE.SQL" in fn and fn.endswith(".log")]
newest_timestamp = ""
for logfile in logfiles:
timestamp = logfile.rsplit(".", maxsplit=2)[1]
if timestamp > newest_timestamp:
newest_logfiles = [logfile]
newest_timestamp = timestamp
elif timestamp == newest_timestamp:
newest_logfiles.append(logfile)
print("Newest logfiles:", *newest_logfiles, sep="\n")
if len(logfiles) > 1:
for filename in logfiles:
if filename not in newest_logfiles:
print("Deleting old log file:", filename)
#os.remove(filename) # Uncomment this line
1条答案
按热度按时间agxfikkp1#
这里有一个办法。
os.listdir
返回目录中的所有文件。因此,使用列表解析来创建仅包含实际日志文件的列表。假设日志文件中的时间戳是YYYYMMDDHHMMSS,你可以使用
max
来返回最大的日期。如果它实际上是YYYYDDMMHHMMSS,那么你需要将字符串转换为datetime.datetime
对象,以便正确排序。最后,循环遍历日志文件列表,如果有多个日志文件,则调用
os.remove
删除其他日志文件(如果这就是您所说的“丢弃”)。更新后的代码与上面的代码基本相同,但创建了一个日志文件列表,这些日志文件都具有最高的时间戳。旧代码只会返回一个日志文件,即使有多个文件具有相同的时间戳。