使用Python获取目录中文件及其大小的列表


目录是计算机系统中一种特殊的节点,包含其他嵌套文件夹、文件等。要列出目录,我们需要Python的特殊库或模块,例如os模块、glob模块等。它们还提供访问目录大小的方法。目录的大小是指目录在计算机ROM中占用的空间。在本文中,我们将探讨如何获取目录中文件的列表以及它们的大小。

使用OS模块

Python的os模块是一个强大的工具,允许开发者与底层操作系统交互。它提供各种函数来执行文件和目录管理任务、进程处理、环境变量等等。使用os模块,您可以创建、删除和操作文件和目录,执行系统命令,导航文件路径以及访问各种系统相关信息。它连接您的Python代码和底层操作系统,使您能够构建健壮、与平台无关的应用程序。

示例

我们首先使用以下代码中的import语句导入了os模块。接下来,我们创建了一个名为get_file_sizes的函数,它接受目录名称作为参数并打印所有文件名及其大小。我们使用“listdir”列出目录中的所有文件和目录。接下来,我们遍历列表,对于每次迭代,我们检查它是否是文件,如果是,我们使用“getsize”方法打印名称和大小。

import os
def get_file_sizes(directory):
    files = os.listdir(directory)
    for file in files:
        path = os.path.join(directory, file)
        if os.path.isfile(path):
            size = os.path.getsize(path)
            print(f"{file}: {size} bytes")
directory_path = "files"
get_file_sizes(directory_path)

输出

file1.txt: 12 bytes
file2.txt: 26 bytes
file3.txt: 56 bytes

使用Glob和OS模块

Python的glob模块有助于使用通配符模式搜索文件和目录。它允许您定义特定的模式或模板,并将它们与文件名或目录名进行匹配。您可以使用"*"、"?"等通配符创建灵活的模式,以查找符合您条件的文件。使用glob模块,您可以轻松检索与您指定的模式匹配的文件列表及其对应的路径。它提供了一种方便且高效的方式,根据可自定义的模式执行文件搜索和操作。

示例

在以下代码中,我们首先使用Python的import语句导入了glob和os模块。接下来,我们定义了一个名为get_files_sizes的函数,它接受目录路径作为参数。接下来,我们使用glob模块的glob方法查找目录中的所有路径。我们遍历列表,如果它是一个文件,我们使用os的“getsize”方法确定文件的大小。

import glob
import os
def get_file_sizes(directory):
    file_paths = glob.glob(os.path.join(directory, "*"))
    for path in file_paths:
        if os.path.isfile(path):
            size = os.path.getsize(path)
            file_name = os.path.basename(path)
            print(f"{file_name}: {size} bytes")
directory_path = "files"
get_file_sizes(directory_path)

输出

file1.txt: 12 bytes
file2.txt: 26 bytes
file3.txt: 56 bytes

使用Pathlib库的Path模块

Python中的pathlib库是用于以面向对象的方式处理文件系统路径的强大工具。它提供了一种用户友好且直观的方法来处理路径、目录和文件。使用pathlib,您可以使用一致且表达力强的语法轻松创建、操作和导航路径。使用此库的优点是它消除了使用复杂的字符串操作来处理文件名的需要。

示例

在以下代码中,我们首先从pathlib库中导入了Path模块。接下来,我们创建了一个函数,该函数接受目录名称作为参数。我们使用Path方法创建一个对象,并使用iterdir方法遍历目录内的所有目录和文件夹。接下来,我们检查列表中的元素是否是目录,如果是,我们使用stat().st_size方法确定大小。

from pathlib import Path

def get_file_sizes(directory):
    path = Path(directory)
    files = path.iterdir()
    for file in files:
        if file.is_file():
            size = file.stat().st_size
            print(f"{file.name}: {size} bytes")
directory_path = "files"
get_file_sizes(directory_path)

输出

file1.txt: 12 bytes
file2.txt: 26 bytes
file3.txt: 56 bytes

使用OS模块的Stat方法

os模块提供了另一种确定文件大小的方法——stat方法。该方法有助于检索有关文件和目录的各种信息。它返回一个元组对象,其中包含指定路径的各种属性,例如文件大小、权限、时间戳等等。

示例

在以下代码中,我们首先导入了os模块。接下来,在内置函数中,我们使用scandir方法列出所有存在的文件和目录。我们遍历文件,对于每个条目,我们检查该元素是否为文件。如果它是一个文件,我们使用“stat”方法和st_size属性来确定大小。

import os

def get_file_sizes(directory):
    with os.scandir(directory) as entries:
        for entry in entries:
            if entry.is_file():
                size = entry.stat().st_size
                print(f"{entry.name}: {size} bytes")
directory_path = "files"
get_file_sizes(directory_path)

输出

file1.txt: 12 bytes
file2.txt: 26 bytes
file3.txt: 56 bytes

结论

在本文中,我们了解了如何使用Python的不同库列出目录中的文件及其大小。Python是一种通用的脚本语言,提供了各种列出文件的方法。这包括glob、os、pathlib等。它们是与平台无关的代码,使编码人员能够在多个应用程序中使用相同的代码。

更新于:2023年7月18日

1K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告