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

如何使用Python删除文件夹中除最后5项之外的所有文件,python,file,delete-file,Python,File,Delete File,我正在寻找一种方法,如何从文件中清除文件夹,除了使用Python的最后五项 我是Pytohn的新手,所以我只能用max函数保存最后一个文件,但我无法找到如何保存最后5个文件 有人有类似的问题吗 谢谢你的建议。如果你在linux上,你可以试试这个: 导入操作系统 directory=/path/to/directory os.systemcd+目录+ls-t1 | tail-n+5 | xargs rm-r 如果您使用的是windows,则可以尝试使用此选项: 导入操作系统 directory=/

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

我是Pytohn的新手,所以我只能用max函数保存最后一个文件,但我无法找到如何保存最后5个文件

有人有类似的问题吗


谢谢你的建议。

如果你在linux上,你可以试试这个:

导入操作系统 directory=/path/to/directory os.systemcd+目录+ls-t1 | tail-n+5 | xargs rm-r
如果您使用的是windows,则可以尝试使用此选项:

导入操作系统 directory=/path/to/directory os.system'for/r skip=5 delims=%%a在dir'+directory+'do echo del/f%%a' 或者在cmd上运行此命令:

for /r "skip=5 delims=" %%a in ('dir /path/to/folder') do echo del /f "%%a"

如果您使用的是linux,则可以尝试以下操作:

导入操作系统 directory=/path/to/directory os.systemcd+目录+ls-t1 | tail-n+5 | xargs rm-r
如果您使用的是windows,则可以尝试使用此选项:

导入操作系统 directory=/path/to/directory os.system'for/r skip=5 delims=%%a在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获取文件名。由于这将返回一个迭代器,因此您可以轻松地按照python本身所需的方式进行排序。然后使用列表索引保留最后五个

然后使用os.remove删除文件

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

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

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

在Python标准库级别,os.scandir同时检索文件名及其属性。然后,可以根据文件的修改时间轻松地对文件进行排序:

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

将返回路径文件夹中所有文件名的列表,从最新到最旧排序。然后,您可以在文件名[5:]上迭代以删除除5个最新文件之外的所有文件。

我很遗憾在Windows上我很遗憾在Windows上我很遗憾在python 2.7上可以这样做吗?我想用.log扩展名What is entry删除更多文件。name这是否适用于python 2.7我想用.log扩展名What is entry删除更多文件。名称我希望根据上次修改时间对文件名进行排序,而不是按字母顺序对文件名进行排序。我认为它是按照文件名的字母顺序排序的,而不是最近的。请根据上次修改时间提出建议,并在python 2.7中保留最近的5个。我想根据上次修改时间对文件名进行排序,而不是按字母顺序对文件名进行排序。我认为它是按照文件名的字母顺序排序的,而不是最近的。请根据上次修改时间提出建议,并在python 2.7中保留最近5次