Python 如何获得所有子目录和文件的列表以及按大小排序的大小?

Python 如何获得所有子目录和文件的列表以及按大小排序的大小?,python,Python,如何获取所有子目录和文件的列表,以及它们的大小按大小升序排列 下面的代码为我提供了所有文件的列表,但没有按大小排序。请帮忙 import os import os.path, time from os.path import join, getsize count=0 for root, dirs, files in os.walk('Test'): for file in list(files): fileaddress = os.path.join(root, fil

如何获取所有子目录和文件的列表,以及它们的大小按大小升序排列

下面的代码为我提供了所有文件的列表,但没有按大小排序。请帮忙

import os
import os.path, time
from os.path import join, getsize
count=0
for root, dirs, files in os.walk('Test'):
    for file in list(files):
        fileaddress = os.path.join(root, file)
        print("\nName:",fileaddress)
        print("Time:",time.strftime("%m/%d/%Y %I:%M:%S %p",time.localtime(os.path.getmtime(fileaddress))))
        count=count+1
print(count);

对于
dirs
,情况也是如此——虽然我不确定目录的“大小”到底是多少——但您可能无法使用
getsize
对其进行排序(如果可以,您将不会得到有意义的结果)。

谢谢您的帮助。如果文件列表很大怎么办。比如说200000多个文件。打电话会有效率吗?在调用os.walk之前或调用os.walk时,是否有任何方法可以执行排序操作?还是有效率更高的方法?这种方法有效吗?Thanks@Romaan:与遍历目录所需的时间相比,排序200000个结果所需的时间将不算什么,因此这里没有效率问题。可能存在响应性问题:在整个过程完成之前,您不会看到任何东西,而不是看到结果在整个过程中顺利显示,但这是没有办法解决的。@Roman——如果您希望排序,这是最有效的排序方法。如果要排序,您需要知道整个列表(如果最后一个元素应该先排序怎么办?)。如果要列出200000多个文件,则排序并不会降低速度,而是循环遍历所有目录并列出所有文件的IO开销。@Roman:对于您的另一个问题,首先,没有直接的方法可以按排序顺序获取文件。当然,您可以为每个目录
popen
out到
ls
,或者从顶层
find
,为您完成这项工作,但不能保证它们的排序速度会明显加快。您的操作系统/文件系统可能没有任何API来加快速度(POSIX和Windows没有,尽管BeOS有)。但是,如果合适的话,您可以与Spotlight、Windows桌面搜索等进行对话,而不是与文件系统进行对话。
import os
from os.path import join, getsize

file_list = []
for root, dirs, files in os.walk('Test'):
    file_list.extend( join(root,f) for f in files )
    #May be *slightly* faster at the expense of a little readability 
    # and a little memory
    # file_list.extend( [ join(root,f) for f in files ] ) 


print (sorted(file_list, key=getsize))