
[英]Read multiple .xlsx files from a directory into separate Pandas data frames based on file name
[英]Delete Files from directory based on file name version
我想根据文件名从目录中删除旧的 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,则 append 列出并最终删除它。
import os
source = r'C:\Users\Pyhton'
for filename in os.listdir(source):
GroupFile = filename[0:22]
失去了如何保持第一个文件的价值并继续检查。
以下应该会给你想要的最终结果。
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_files
): latest_version_file_name 然后删除除映射中的文件之外的所有文件。
编辑:对不起,我错过了保留其中一些的部分!
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)
对不起,我无法抗拒。
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())
及其用法
files = [
"PyhtonReport_20180404_03.zip",
"PyhtonReport_20180404_02.zip",
"PyhtonReport_20180404_01.zip",
"PyhtonReport_20181221_02.zip",
"PyhtonReport_20181221_01.zip",
"PyhtonReport_20180816_01.zip",
]
print(distinct_dates(files))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.