gpt4 book ai didi

python - 对文件然后目录进行排序 os.listdir PYTHON

转载 作者:行者123 更新时间:2023-12-02 03:43:25 27 4
gpt4 key购买 nike

我正在尝试以特定方式对文件和目录进行排序(对我来说这是通常的方式,但还可以)。所以我有 JPG 文件,然后是一些 txt 文件或 wav,我有一些目录,我希望它像首先按名称排序所有文件,然后对目录排序,但是当我尝试执行以下操作时:

path = "/my_path"
arr = os.listdir(path)
arr.sort(key=lambda x: (os.path.isdir(x), x))
print(arr)

代码给我输出:

['10000100.JPG', '10000101.JPG', '10000102.JPG', '10000103.JPG', '10000104.BMP', 'BACKUP.BIN', 'DEPOSIT.BIN', 'HRYS', 'WAVS', 'k.txt', 's.wav']

但应该是:

['10000100.JPG', '10000101.JPG', '10000102.JPG', '10000103.JPG', '10000104.BMP', 'BACKUP.BIN', 'DEPOSIT.BIN', 'k.txt', 's.wav', 'HRYS', 'WAVS']

如何以正确的方式做到这一点?

最佳答案

嗯,最直接的方法是提供适当的 key ,因此,您可以使用:

arr.sort(key=lambda x: (os.path.isdir(x), x))

key是一个元组,第一项是os.path.isdir(x) ,它返回 bool .

编辑:所以,为了确保它有效,请执行以下操作:

def isdir(path, x):
path = os.path.join(path, x)
return os.path.isdir(path)

arr.sort(key=lambda x: (isdir(path, x), x))

尽管如此,使用 os.scandir 可能更容易,它返回更有用的 DirEntry对象。

arr = sorted(os.scandir(), key=lambda x: (x.is_dir(), x.name))

关于python - 对文件然后目录进行排序 os.listdir PYTHON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47669582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com