[英]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.