我想根据无法考虑创建日期的文件名从目录中删除旧的ZIP文件
例如
PyhtonReport_20180404_03.zip
PyhtonReport_20180404_02.zip
PyhtonReport_20180404_01.zip
PyhtonReport_20181221_02.zip
PyhtonReport_20181221_01.zip
PyhtonReport_20180816_01.zip
最终结果:
PyhtonReport_20180404_03.zip
PyhtonReport_20181221_02.zip
PyhtonReport_20180816_01.zip
我试图读取前23个字符,如果与第二个字符匹配,则将file1与file2比较。如果该值为false,则追加到列表并最终将其删除。
import os
source = r'C:\Users\Pyhton'
for filename in os.listdir(source):
GroupFile = filename[0:22]
丢失了如何保留第一个文件的值并继续检查的方法。
答案 0 :(得分:1)
以下内容将为您提供所需的最终结果。
import os
source = r"C:\Users\Pyhton"
file_names = os.listdir(source)
latest_files = {}
for file_name in file_names:
name_parts = file_name.split("_")
date_stamp = name_parts[1]
if date_stamp not in latest_files or file_name > latest_files[date_stamp]:
latest_files[date_stamp] = file_name
keep_files = latest_files.values()
for file_name in file_names:
if file_name in keep_files:
continue
os.remove(os.path.join(source, file_name))
创建一个日期为{latest_version_file_name的映射(latest_files
),然后除去该映射中的所有文件。
答案 1 :(得分:0)
编辑:对不起,我错过了保留其中一些的部分!
import glob
import os
files = glob.glob('path/to/old/files/common_part_of_files_names*.zip')
groups = set([f[:21] for f in files])
for group in groups:
versions = [f for f in files if f.starts_with(group)]
versions.remove(max(versions)) # pop latest
for v in versions:
os.remove(v)
答案 2 :(得分:0)
对不起,我不能陪伴。
var texts = doc.DocumentNode
.SelectNodes("//a[@href]")
.Select(n => n.InnerText)
.Distinct()
.ToList();
及其用法
def distinct_dates(files):
"Remove duplicates of same date files, preserving the first ocurrence"
o = {} # Saves first occurrence as {date: file}
for i, date in enumerate(map(lambda f: f[13:21], files)):
if date not in o:
o[date] = files[i]
return list(o.values())