使用Python获取按大小排序的目录文件列表。


目录包含计算机路径中保存有关其他嵌套路径信息的特殊节点,但并不包含任何信息。由于它们包含文件和其他目录,因此它们具有一定的尺寸。按大小排序意味着根据目录在磁盘中占用的空间对目录进行排序。在本文中,我们将探讨几种方法,例如使用os模块、glob模块等、sorted、lambda函数等来执行相同的操作。

使用OS和Operator模块

Python的os模块提供了一种与操作系统交互的方式。它提供了各种与操作系统相关的任务的函数,包括文件和目录操作、进程管理、环境变量等。另一方面,operator模块为我们提供了内置的Python运算符,例如map、filter、sorted等。该模块为我们提供了有助于编写更简洁、更清晰代码的方法。

示例

我们首先在下面的代码中导入了Python中的os和operator模块。接下来,我们定义了文件所在的目录。我们还以列表的形式定义了所有文件名。我们定义了一个名为files的空列表。接下来,我们遍历包含文件名的列表,在每次迭代中,我们首先检查元素是否为文件。如果元素是文件,我们使用getsize()方法访问大小。我们将文件名和大小附加到初始化的列表中,并使用sort方法对其进行排序。

import os
import operator

directory = 'files'
file_list = ['file1.txt', 'file2.txt', 'file3.txt']

files = []
for file_name in file_list:
    file_path = os.path.join(directory, file_name)
    if os.path.isfile(file_path):
        file_size = os.path.getsize(file_path)
        files.append((file_name, file_size))

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

for file in files:
    print(f"File: {file[0]}, Size: {file[1]} bytes")

输出

File: file1.txt, Size: 12 bytes
File: file2.txt, Size: 26 bytes
File: file3.txt, Size: 56 bytes

使用os和Lambda函数

lambda函数是一个没有任何名称的函数,用于小型任务。它与任何典型函数的作用相同。但由于它没有名称,因此我们不能在代码的其他部分使用它。当我们需要快速将某些东西应用于可迭代对象时,这很有用,但我们确定不需要在其他地方使用该函数。

示例

下面的示例与上一个示例具有相似的代码。唯一的区别是,我们使用lambda函数而不是operator模块对列表中的文件进行排序。我们使用Python的sorted方法进行排序,并使用lambda函数将函数应用于所有列表元素。

import os

directory = 'files'
file_list = ['file1.txt', 'file2.txt', 'file3.txt']

files = []
for file_name in file_list:
    file_path = os.path.join(directory, file_name)
    if os.path.isfile(file_path):
        file_size = os.path.getsize(file_path)
        files.append((file_name, file_size))

sorted_files = sorted(files, key=lambda x: x[1])

for file in sorted_files:
    print(f"File: {file[0]}, Size: {file[1]} bytes")

输出

File: file1.txt, Size: 12 bytes
File: file2.txt, Size: 26 bytes
File: file3.txt, Size: 56 bytes

使用Glob和OS

Python中的glob模块提供了一种使用通配符模式搜索文件方便的方法。它允许您根据特定模式或模式使用通配符匹配文件或目录名。因此,我们可以使用该函数检索与模式匹配的文件和路径列表。方法包括通配符模式,例如"*"、"?"等。

示例

我们首先在下面的代码中使用import语句导入了glob和os模块。接下来,我们定义了文件所在的目录。我们以列表的形式获取所有文件名。我们检查了所有列表元素是否为文件。接下来,我们使用Python的sorted方法根据大小对文件进行排序。我们使用迭代技术遍历列表以打印文件的名称和大小。

import glob
import os

directory = 'files'

files = [(os.path.basename(file), os.path.getsize(os.path.join(directory, file))) for file in ['file1.txt', 'file2.txt', 'file3.txt'] if os.path.isfile(os.path.join(directory, file))]
sorted_files = sorted(files, key=lambda x: x[1])

for file in sorted_files:
    print(f"File: {file[0]}, Size: {file[1]} bytes")

输出

File: file1.txt, Size: 12 bytes
File: file2.txt, Size: 26 bytes
File: file3.txt, Size: 56 bytes

结论

在本文中,我们了解了如何使用Python获取按大小排序的目录文件列表。Python提供了多个库来处理目录和文件。我们可以使用glob、os等来处理目录和文件。为了对目录进行排序,我们可以使用Python中的其他编程技术,例如lambda函数、operator模块等。

更新于:2023年7月18日

433 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告