如何使用 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 个最新文件之外的所有文件。
我正在寻找一种方法来清除文件夹中的文件,但最新的五个项目 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 个最新文件之外的所有文件。