Python 使用脚本删除具有特定扩展名的文件

Python 使用脚本删除具有特定扩展名的文件,python,automation,Python,Automation,我编写了以下脚本来删除具有特定扩展名的文件。但是,此脚本删除具有扩展名'.log'或.txt'或.css'的文件 如果文件扩展名是'.log000123'或'.log1234',那么这里的扩展名是常量,但在扩展名之后添加了随机数。通过此脚本,可以执行哪些操作来删除此类文件 如对脚本进行任何修改或链接到任何包含此类示例的网站,将不胜感激 import os, time, sys folder_path = "C:\SampleFolder" file_ends_with = ".log" how

我编写了以下脚本来删除具有特定扩展名的文件。但是,此脚本删除具有扩展名
'.log'或.txt'或.css'
的文件

如果文件扩展名是
'.log000123'
'.log1234'
,那么这里的扩展名是常量,但在扩展名之后添加了随机数。通过此脚本,可以执行哪些操作来删除此类文件

如对脚本进行任何修改或链接到任何包含此类示例的网站,将不胜感激

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
导入操作系统、时间、系统
folder\u path=“C:\SampleFolder”
文件以“.log”结尾
要删除多少天的日志=7
now=time.time()
仅_文件=[]
对于os.listdir(文件夹路径)中的文件:
file\u full\u path=os.path.join(文件夹路径,文件)
如果os.path.isfile(文件完整路径)和file.endswith(文件以结尾):
#删除早于x天的文件
如果os.stat(file_full_path).st_mtime
这应该可以:

import os, time, sys

folder_path = "C:\SampleFolder"
file_contains = ".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_contains in file_full_path:
        #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
导入操作系统、时间、系统
folder\u path=“C:\SampleFolder”
文件_包含=“.log”
要删除多少天的日志=7
now=time.time()
仅_文件=[]
对于os.listdir(文件夹路径)中的文件:
file\u full\u path=os.path.join(文件夹路径,文件)
如果os.path.isfile(file_full_path)和file_包含在file_full_path中:
#删除早于x天的文件
如果os.stat(file_full_path).st_mtime
您可以使用正则表达式和
os.path.splitext

import os
import re

file = "myfile.log123"

pattern = ".log(.*)"  # match .log followed by anything
fname, ext = os.path.splitext(file)

# check this condition:
if re.match(pattern, ext):
    # do stuff
试试这个:

import fnmatch
import os

matches = []
folder_path = "C:\SampleFolder"

how_many_days_old_logs_to_remove = 7

now = time.time()

for root, dirnames, filenames in os.walk(folder_path):

    for filename in fnmatch.filter(filenames, '*.log*'):

        if os.stat(filename).st_mtime < now - how_many_days_old_logs_to_remove * 86400: 
             os.remove(filename)
             print "\n File Removed : " , file_full_path

        # matches.append(os.path.join(root, filename))

import-fnmatch
导入操作系统
匹配项=[]
folder\u path=“C:\SampleFolder”
要删除多少天的日志=7
now=time.time()
对于os.walk(文件夹路径)中的根、目录名和文件名:
对于fnmatch.filter(文件名“*.log*”)中的文件名:
如果os.stat(filename).st_mtime
我们可以使用正则表达式来确定文件是否为
日志文件。

如果您的唯一目的是删除超过7天的日志文件,则可以使用
datetime
模块,而不是使用
time
模块。

查看下面的代码:

import re
import datetime
import os

folder_path = "C:\SampleFolder"
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 re.search(r".*\.log.*", file_full_path):
        # Delete files older than x days
        last_mod_time = datetime.datetime.fromtimestamp(os.stat(file_full_path).st_mtime)
        limt_mod_time = datetime.datetime.today() - datetime.timedelta(days=7)

        if last_mod_time < limt_mod_time:
            os.remove(file_full_path)
            print("\n File Removed : ", file_full_path)
重新导入
导入日期时间
导入操作系统
folder\u path=“C:\SampleFolder”
仅_文件=[]
对于os.listdir(文件夹路径)中的文件:
file\u full\u path=os.path.join(文件夹路径,文件)
如果os.path.isfile(文件完整路径)和re.search(r“.*\.log.*”,文件完整路径):
#删除早于x天的文件
last_mod_time=datetime.datetime.fromtimestamp(os.stat(文件完整路径).st_mtime)
limt\u mod\u time=datetime.datetime.today()-datetime.timedelta(天=7)
如果上次修改时间<限制修改时间:
删除(文件完整路径)
打印(“\n已删除文件:”,文件完整路径)

您是否尝试过使用
文件结尾\u with=“.log*”
?是的,Yamila我尝试过,但不起作用。请尝试以下操作:
文件[-4:==文件结尾\u with
您可以检查
操作系统路径.splitext(名称)[1][:4]='.log':
以检查文件扩展名的前四个字符。否,我做了一个更改:代码中的第一个
if
现在检查
“.log”
是否在
文件的完整路径中。请仔细阅读。是的,亚米拉,它很有魅力,非常感谢你,我真的很感谢你的帮助,干杯:)谢谢你@Shantanu。你可以投票选出正确的答案,然后接受它。只需在删除过程中检查时间检查。除此之外,它还会列出所有包含
.log*
的文件。干得好。我推荐这个