我想用Python列出目录,并按文件大小排序文件名

3 投票
4 回答
8783 浏览
提问于 2025-04-16 15:15

下面的代码可以获取文件,但这些文件并没有按照顺序排列。

    for fn in os.listdir(path):

        if fn[0] == '.':
            continue

        try:
            p = os.path.join(path, fn)
        except:
            continue

        s = os.lstat(p)

        if stat.S_ISDIR(s.st_mode):
            l.append((fn, build_tree(p)))
        elif stat.S_ISREG(s.st_mode):
            l.append((fn, s.st_size))

4 个回答

7

使用排序是最有效和标准的方法。

升序:

sorted_list = sorted(files, key=os.path.getsize)

降序:

sorted_list = sorted(files, key=os.path.getsize, reverse=True)
11

一种方法

>>> import operator
>>> import os
>>> getall = [ [files, os.path.getsize(files)] for files in os.listdir(".") ]
>>> sorted(getall, key=operator.itemgetter(1))
1
import operator

for fn in os.listdir(path):

    if fn[0] == '.':
        continue

    try:
        p = os.path.join(path, fn)
    except:
        continue

    s = os.lstat(p)

    if stat.S_ISDIR(s.st_mode):
        l.append((fn, build_tree(p)))
    elif stat.S_ISREG(s.st_mode):
        l.append((fn, s.st_size))

对于升序排序:

l.sort(key=operator.itemgetter(1))

对于降序排序:

l.sort(key=operator.itemgetter(1), reverse=True)

撰写回答