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

How delete all files in a folder except last 5 items with Python

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

我对 Python 很陌生,所以我只能用 max() 函数保留最后一个文件,但我不知道如何保留最后 5 个文件。

有没有人有类似的问题?

谢谢你的想法。

如果你在 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"

用户os.listdir获取文件名。由于此 returns 是一个迭代器,您可以轻松地在 python 本身中按照您想要的方式进行排序。然后使用列表索引保留最后五个。

然后使用os.remove删除文件

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

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

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

return 将 path 文件夹中所有文件名的列表从最新到最旧排序。然后您可以迭代 filenames[5:] 以删除除 5 个最新文件之外的所有文件。