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*
的文件。干得好。我推荐这个