import glob
import os
filelist=glob.glob("/home/test/*.txt")
for file in filelist:
os.remove(file)
我能够通过上述代码删除所有文件。但是我不想删除10个txt文件中的最新2个文件。其余的文件都想删除。 有人可以帮我吗?
编辑:
我尝试index
排除最后2个文件,得到了不同的输出。文件
-rwxrwxr-x 1 test1 test 14 May 27 2015 test.txt
-rw-r--r-- 1 test1 test 1857 Nov 9 2016 list.txt
-rw-r--r-- 1 test1 test 140 Jun 8 22:09 check.txt
-rw-r--r-- 1 test1 test 570 Jun 8 22:12 ert.txt
-rw-r--r-- 1 test1 test 0 Jul 2 03:17 1.txt
-rw-r--r-- 1 test1 test 0 Jul 2 03:17 2.txt
我的新代码是:
import glob import os
filelist=glob.glob("/home/test/*.txt")
for file in filelist[:-2]:
print file
输出
> /home/test/1.txt
> /home/test/2.txt
> /home/test/list.txt
> /home/test/ert.txt
答案 0 :(得分:2)
您可以使用filelist
作为排序键来对os.stat(f).st_mtime
进行排序:
filelist = sorted(filelist, key=lambda f: os.stat(f).st_mtime)
此后,您遍历文件列表,最后两个文件除外:
for f in filelist[:-2]:
os.remove(f)
答案 1 :(得分:1)
如果要排除glob
机器中的最后2个项目,只需更改您的for
循环:
import glob
import os
filelist=glob.glob("/home/test/*.txt")
for file in filelist[:-2]:
os.remove(file)
否则,您可以使用其他答案对文件进行排序,并排除最后2个文件。
编辑:
glob
模块找到与指定模式匹配的所有路径名 根据Unix Shell使用的规则,尽管结果是 返回任意顺序。
也看看这个: