📜  Python - 获取目录中按大小排序的文件列表

📅  最后修改于: 2022-05-13 01:54:42.718000             🧑  作者: Mango

Python - 获取目录中按大小排序的文件列表

在本文中,我们将研究在Python编程语言中按大小排序获取给定目录中文件列表的不同方法。

获取目录中文件列表的两种不同方法按大小排序如下:

  • 使用 os.listdir()函数
  • 使用 glob() 函数 

方法一:使用 os.listdir()函数

Python的os.listdir() 方法用于获取指定目录下所有文件和目录的列表。如果我们不指定任何目录,则将返回当前工作目录中的文件和目录列表。

在此方法中,我们将在按文件大小排序的文件夹中创建文件名列表。我们将传递lambda x: os.stat(os.path.join(dir_name, x)).st_size作为 sorted()函数的关键参数,该函数将按大小对目录中的文件进行排序。

Python3
import os
  
name_of_dir = 'dir_path'
  
# Storing list of all files
# in the given directory in list_of_files
list_of_files = filter( lambda x: os.path.isfile
                       (os.path.join(name_of_dir, x)),
                        os.listdir(dir_name) )
  
# Sort list of file names by size 
list_of_files = sorted( list_of_files,
                        key =  lambda x: os.stat
                       (os.path.join(name_of_dir, x)).st_size)
  
# Iterate over sorted list of file 
# names and print them along with size one by one 
for name_of_file in list_of_files:
    path_of_file = os.path.join(name_of_dir, name_of_file)
    size_of_file  = os.stat(path_of_file).st_size 
    print(size_of_file, ' -->', name_of_file)


Python3
import glob
import os
  
name_of_dir = 'dir_path/'
  
# Storing list of all files (file paths)
# in the given directory in list_of_files
list_of_files = filter( os.path.isfile,
                        glob.glob(name_of_dir + '*') )
  
# Sort list of files in directory by size 
list_of_files = sorted( list_of_files,
                        key =  lambda x: os.stat(x).st_size)
  
# Iterate over sorted list of file names
# and print them along with size one by one 
for path_of_file in list_of_files:
    size_of_file  = os.stat(path_of_file).st_size 
    print(size_of_file, ' -->', path_of_file)


输出:

366  --> descript.ion
1688  --> readme.txt
3990  --> License.txt
15360  --> Uninstall.exe
48844  --> History.txt
50688  --> 7-zip32.dll
78336  --> 7-zip.dll
108074  --> 7-zip.chm
186880  --> 7zCon.sfx
205824  --> 7z.sfx
468992  --> 7z.exe
581632  --> 7zG.exe
867840  --> 7zFM.exe
1679360  --> 7z.dll

方法二:使用glob()函数

在Python编程语言中,我们有 glob 模块,它提供了一个名为 glob() 的函数,用于根据匹配模式在给定目录中查找文件或目录。使用 glob()函数,我们可以使用通配符和正则表达式来匹配和查找目录中的少数文件或目录中的所有文件。在此方法中,我们将使用 glob()函数获取目录中所有文件的列表以及大小。步骤如下,

首先,我们将使用 glob() 获取目录中所有文件的列表,然后我们将使用 sorted()函数根据文件的大小对文件列表进行排序。

我们将使用 os.stat(file_path).st_size 从文件的 stat 对象中获取文件大小。然后我们将在 lambda函数中将封装的大小作为 sorted()函数的关键参数传递。

蟒蛇3

import glob
import os
  
name_of_dir = 'dir_path/'
  
# Storing list of all files (file paths)
# in the given directory in list_of_files
list_of_files = filter( os.path.isfile,
                        glob.glob(name_of_dir + '*') )
  
# Sort list of files in directory by size 
list_of_files = sorted( list_of_files,
                        key =  lambda x: os.stat(x).st_size)
  
# Iterate over sorted list of file names
# and print them along with size one by one 
for path_of_file in list_of_files:
    size_of_file  = os.stat(path_of_file).st_size 
    print(size_of_file, ' -->', path_of_file)   

输出:

366  --> C:/Program Files/7-Zip\descript.ion
1688  --> C:/Program Files/7-Zip\readme.txt
3990  --> C:/Program Files/7-Zip\License.txt
15360  --> C:/Program Files/7-Zip\Uninstall.exe
48844  --> C:/Program Files/7-Zip\History.txt
50688  --> C:/Program Files/7-Zip\7-zip32.dll
78336  --> C:/Program Files/7-Zip\7-zip.dll
108074  --> C:/Program Files/7-Zip\7-zip.chm
186880  --> C:/Program Files/7-Zip\7zCon.sfx
205824  --> C:/Program Files/7-Zip\7z.sfx
468992  --> C:/Program Files/7-Zip\7z.exe
581632  --> C:/Program Files/7-Zip\7zG.exe
867840  --> C:/Program Files/7-Zip\7zFM.exe
1679360  --> C:/Program Files/7-Zip\7z.dll