我有一个包含很多文件的目录,大约50k。我想选择n个最小的文件。

import os

def main():
listfile = os.listdir("../../folder")
for singlefile in listfile:
    print singlefile

不幸的是,有了这段代码,我将全部选中它们。

最佳答案

您可以使用os.path.getsize获取文件大小,然后使用它来sort您的文件。(heapq.nsmallest通常是首选项,但已包含在另一个anser中,因此我将显示另一个选项):

import os

directory = "../../folder"
n = 10

files = os.listdir(directory)
files_sorted_by_size = sorted(files, key=lambda filename: os.path.getsize(os.path.join(directory, filename)))
nsmallest_files = files_sorted_by_size[:n]
print(nsmallest_files)

一行:
sorted(os.listdir(directory), key=lambda filename: os.path.getsize(os.path.join(directory, filename)))[:n]

10-07 13:00
查看更多