如何使用Python删除文件夹中除最后5个项目以外的所有文件

问题描述 投票:-1回答:3

我正在寻找一种方法来清除文件中的文件夹,但最新的五个项目除外。

我对Pytohn还是很陌生,所以我只能使用max()函数保留最后一个,但是我无法找出如何保留5个最后一个文件。

有人有类似的问题吗?

谢谢您的想法。

python file delete-file
3个回答
1
投票

用户os.listdir获取文件名。当这返回一个迭代器时,您可以轻松地在python本身中排序所需的方式。然后使用列表索引来保留最后五个。

然后使用os.remove删除文件

import os
for filename in sorted(os.listdir("foldername"))[:-5]:
    filename_relPath = os.path.join("foldername",filename)
    os.remove(filename_relPath)

1
投票

在Python标准库级别,os.scandir检索文件名及其属性。然后可以根据文件的修改时间轻松对其进行排序:

filenames = [entry.name for entry in sorted(os.scandir(path),
                                            key=lambda x: x.stat().st_mtime, reverse=True)]

将返回path文件夹中所有文件名的列表(从最新到最旧)。然后,您可以在filenames[5:]上进行迭代以删除除5个最新文件以外的所有文件。


1
投票

如果您使用的是Linux,则可以尝试使用此方法:

import os

directory = /path/to/directory

os.system("cd " + directory + " ls -t1 | tail -n +5 | xargs rm -r")

如果您在Windows上,可以尝试使用此方法:

import os

directory = /path/to/directory

os.system('for /r "skip=5 delims=" %%a in ("dir ' + directory + ' ") do echo del /f "%%a"')

或直接在cmd上运行:

for /r "skip=5 delims=" %%a in ('dir /path/to/folder') do echo del /f "%%a"
© www.soinside.com 2019 - 2024. All rights reserved.