如何在Python中删除目录中指定数量的文件?

如何在Python中删除目录中指定数量的文件?,python,python-3.x,Python,Python 3.x,我想减少文件夹中的文件数量,或者从文件夹中删除指定数量的文件。 我希望简单的解决方案可能局限于我下面的代码,这肯定是行不通的,也是错误的 files = os.listdir() for file in files: for file in range(11): os.remove(file) 但请确保您的条件是不删除包含代码的python文件。这将删除2个文件。您可以在范围内更改计数器。您只需在范围内正确迭代即可: files = os.listdir('path/t

我想减少文件夹中的文件数量,或者从文件夹中删除指定数量的文件。 我希望简单的解决方案可能局限于我下面的代码,这肯定是行不通的,也是错误的

files = os.listdir()
for file in files:
    for file in range(11):
        os.remove(file)

但请确保您的条件是不删除包含代码的python文件。这将删除2个文件。您可以在范围内更改计数器。您只需在范围内正确迭代即可:

files = os.listdir('path/to/your/folder')
for file in files[:11]:
    os.remove(file)
通过这种方式,您将遍历包含前11个文件的列表

如果要删除随机文件,可以使用:

from random import sample

files = os.listdir('path/to/your/folder')
for file in sample(files,11):
    os.remove(file)

谢谢大家,我也从你们的贡献中挖掘并应用了一些解决方案。这是我得到的。排序是通过创建时间进行的,这对于任务来说更符合逻辑

import os
import re

filepath = os.getcwd()
files = os.listdir(filepath)
files = sorted(files,key=os.path.getmtime)
for file in files[:11]:
    os.remove(file)

您要删除哪些文件?前n个文件(按字母顺序排序)?@Zion请尝试
jterrace
给出的解决方案。您应该弄清楚您的代码出了什么问题。和
os.listdir()[:10]
(或类似)可能是一个很好的开始。@Felix Yes前N个文件
os.listdir
已经返回了一个文件列表。您正在迭代此列表以创建另一个列表。谢谢,我尝试了您的解决方案,效果良好。我只是编辑了代码以包含一个文件路径,并在os.listdir(文件路径)中引用了它。我注意到的唯一挑战是按字母或数字顺序排列文件。很好!如果您对结果感到满意,请接受答案稍微提醒一下,我必须使用
os.remove('path/to/your/folder/'+file)
让python查找文件
import os
import re

filepath = os.getcwd()
files = os.listdir(filepath)
files = sorted(files,key=os.path.getmtime)
for file in files[:11]:
    os.remove(file)