我正在寻找一种方法来清除文件中的文件夹,但最新的五个项目除外。
我对Pytohn还是很陌生,所以我只能使用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)
在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个最新文件以外的所有文件。
如果您使用的是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"