繁体   English   中英

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

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

我正在寻找一种如何从文件中清除文件夹的方法,除了最近使用 Python 的五个最新项目。

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

有没有人有类似的问题?

谢谢你的任何想法。

用户 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)

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

在 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 个最新文件之外的所有文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM