gpt4 book ai didi

Python 比较和删除文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:31:48 26 4
gpt4 key购买 nike

我有一个根据文件夹中的文件名创建的列表,如下所示:

文件名_1、文件名_2、文件名_3...

假设“_”之前的第一部分是文件名,后面的数字是版本。我需要比较具有相同文件名的所有文件,保留最高的文件并从文件夹中删除其他文件。

到目前为止,我已成功从文件夹加载文件,拆分为 file_nameversion并创建包含文件名的列表。

file_list = []    
for path, subdirs, files in os.walk('folder_path'):

for filename in files:
file_version = filename.split('_')
file_name = parts[0]
version = int(parts[1])
file_list.append(filename)

最佳答案

这是实现您正在寻找的内容的片段:

import os

version_matching = {}

for path, subdirs, files in os.walk('test'):

print("Entering " + path)

for filename in files:
parts = filename.split('_')

file_name = parts[0]

try:
version = int(parts[1])
except (IndexError, ValueError):
# In case some files don't follow the pattern
print("Skipping " + path + '/' + filename)
continue

if file_name not in version_matching:

# First time we see this file, save the informations

version_matching[file_name] = {"version": version,
"path": path + '/' + filename}

elif version_matching[file_name]["version"] > version:

# We have already seen the file,
# but the one we are handling has a lower version number,
# we delete it

print("Removing " + path + '/' + filename)
os.remove(path + '/' + filename)

else:

# We have already seen the file,
# but this version is more recent,
# we delete the saved one

print("Removing " + version_matching[file_name]["path"])
os.remove(version_matching[file_name]["path"])

# And we update the saved infos

version_matching[file_name]["version"] = version
version_matching[file_name]["path"] = path + '/' + filename

您可能需要注释掉 os.remove 行以确保它执行正确的操作。

我使用字典来存储版本号最高的文件的信息,每次找到同名文件时,我都会比较版本号并删除较旧的文件。

另请注意,该代码不会损害不遵循指定模式 (.*_[0-9]*) 的文件。

希望对您有所帮助。

关于Python 比较和删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37540673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com