gpt4 book ai didi

python - 删除最后 3 个版本文件夹 - Python

转载 作者:行者123 更新时间:2023-12-01 03:30:27 25 4
gpt4 key购买 nike

我有一个包含一些软件版本的树,我需要保留最后 3 个版本。

我有这样的树文件夹:

版本:

文件夹:

“10.7.0.290”、“10.7.0.289”、“10.7.0.281”、“10.7.0.278”、“10.7.0.275”

“10.6.7.282”、“10.6.7.277”、“10.6.7.274”、“10.6.7.270”

我想保留每个版本的最后 3 文件夹,例如在本例中我想保留“10.7.0.yyy”和“的最后 3” 10.6.7.xxx 版本':

“10.7.0.290”、“10.7.0.289”、“10.7.0.281”

“10.6.7.282”、“10.6.7.277”、“10.6.7.274”

并删除此:

“10.7.0.278”、“10.7.0.275”

'10.6.7.270'

但我的脚本只保留最后 3 个版本,而不是每个版本:

脚本:

import os
import re
import shutil

versions = []
folders = []
a = os.listdir('.')
a.sort(reverse=True)
sorted(a)

for fn in a:
folders.append(fn)
if os.path.isdir(fn):
version = (re.match('^([0-9]+\.[0-9]+\.[0-9]+).*', fn)).group(1)
if (version) not in versions:
versions.append(version)

result = []


for version in versions:
temp = []
for folder in folders:
if folder.startswith(version):
temp.append(folder)

result.append(temp)
print result

for version in result:
for i in range(max(len(version) - 3, 0)):
print version[i]
# shutil.rmtree(version[i])

结果

10.7.0.290 #this files are deleted
10.7.0.289 #this files are deleted
10.6.7.282 #this files are deleted

最佳答案

让我们指出所需的步骤。

  1. 使用os.listdir获取给定路径中所有目录的列表。
  2. 对列表进行排序,并通过对列表进行切片来获取前 3 个目录名称
  3. 使用shutil.rmtree在循环内删除它们。

所以,解决方案应该是:

from os import listdir
import shutil

directories_to_delete = sorted(listdir('desired/path'))[:3]
for directory in directories_to_delete:
shutil.rmtree(directory)

关于python - 删除最后 3 个版本文件夹 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995035/

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