python3实现指定目录下文件sha256及文件大小统计

yizhihongxing

实现指定目录下文件sha256及文件大小统计的过程,可以分为以下步骤:

  1. 确定要统计的目录路径,可以通过input函数获取用户输入或者在代码中直接指定。
  2. 使用os库中的walk函数递归遍历目录下的所有文件,使用hashlib库中的sha256函数计算每个文件的hash值,并使用os库中的stat函数获取文件大小。
  3. 将每个文件的hash值和文件大小记录到字典中,并对文件大小进行求和统计。
  4. 输出所有文件的hash值及文件大小统计结果。

下面是完整的python3代码示例:

import os
import hashlib

def get_files_statistics(folder_path):
    """
    统计指定目录下所有文件的sha256值和文件大小
    :param folder_path: 目录路径
    :return: 字典,包含文件个数、总文件大小和每个文件的sha256值和文件大小
    """
    file_statistics = {"count": 0, "size": 0, "files": {}}

    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            try:
                # 获取文件大小
                file_size = os.stat(file_path).st_size

                # 计算sha256值
                sha256obj = hashlib.sha256()
                with open(file_path, "rb") as f:
                    for chunk in iter(lambda: f.read(4096), b""):
                        sha256obj.update(chunk)
                file_sha256 = sha256obj.hexdigest()

                # 将文件的sha256值和大小记录到字典中
                file_statistics["files"][file] = {"sha256": file_sha256, "size": file_size}

                # 累计文件个数和总大小
                file_statistics["count"] += 1
                file_statistics["size"] += file_size

            except Exception as e:
                print("Failed to process file {}: {}".format(file_path, e))

    return file_statistics


if __name__ == "__main__":
    # 测试获取指定路径下的文件sha256值及文件大小统计
    folder_path = "/Users/john/Desktop/testfolder"
    file_statistics = get_files_statistics(folder_path)

    # 输出统计结果
    print("Total files: {}".format(file_statistics["count"]))
    print("Total size: {} bytes".format(file_statistics["size"]))
    print("File details:\n")
    for filename, stats in file_statistics["files"].items():
        print("{:<20} | Size: {:<10} | sha256: {}".format(filename, stats["size"], stats["sha256"]))

假设我们要统计的目录路径为"/Users/john/Desktop/testfolder",该目录下有两个文件"file1.txt"和"file2.txt",现在测试运行这段代码,输出结果如下:

Total files: 2
Total size: 27 bytes
File details:

file1.txt            | Size: 10         | sha256: a9ad9e1fcf2012dca05b1ad3d65296c2bdd0d44bcbf840f678be7bce0ea4eb0c
file2.txt            | Size: 17         | sha256: 773d6d473a3c565fdc894dd480af54900baf2aedad54571a06987a922d42d46a

可以看到,该程序成功统计了指定目录下的两个文件的sha256值和文件大小,并将结果输出到了控制台。根据需要,我们可以将结果写入到文件,或者通过其他方式进行处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3实现指定目录下文件sha256及文件大小统计 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • pandas库中to_datetime()方法的使用解析

    当我们在处理时间序列数据时,经常需要进行日期和时间的转换,pandas中的to_datetime()方法可以将字符串或Unix时间戳转换为pandas日期时间类型,并进行格式化等操作。本教程将详细讲解to_datetime()方法的使用方法,并提供两个示例进行说明。 前置条件 在开始之前,确保你已经安装了pandas库,可以通过以下代码进行安装: pip i…

    python 2023年5月13日
    00
  • Python安装第三方库的方法(pip/conda、easy_install、setup.py)

    当我们需要使用Python的一些第三方库时,如果直接从源代码下载并安装比较繁琐,因此我们可以使用一些Python包管理工具进行快速便捷的安装,这就是今天我们需要了解的Python安装第三方库的方法。Python包管理工具主要包括pip、conda、easy_install和setup.py等。 pip安装第三方库 pip,全称pip installs pac…

    python 2023年5月14日
    00
  • 简单掌握Python的Collections模块中counter结构的用法

    简介 Python中的collections模块提供了许多高效的数据类型,这些数据类型不是Python内置的数据类型,但是它们是Python语言的重要组成部分,能够提高性能与简化代码。其中一个特别常用的数据类型是counter,它可以方便地帮助我们计算对象列表中每个元素出现的次数。 counter被设计用来统计数据,跟踪值的出现次数。它是无序的、可变的、容器…

    python 2023年6月3日
    00
  • PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法

    PySide2出现“ImportError:DLLloadfailed:找不到指定的模块”的问题及解决方法 问题描述 当你安装好PySide2后,在导入PySide2包时可能会遇到如下错误提示: ImportError: DLL load failed: 找不到指定的模块 问题原因 这种错误通常发生在Windows操作系统上,是因为Qt库的某个依赖项(例如O…

    python 2023年5月13日
    00
  • 详解Python字符串切片

    详解Python字符串切片 在Python编程中,字符串是一种重要的数据类型,字符串切片是在字符串中提取部分内容的一种方法。本文将详细讲解Python字符串切片的语法、使用方法和示例。 切片语法 Python字符串切片使用的语法为: string[start:end:step] 其中,参数start表示切片开始位置的索引,end表示切片结束位置的索引(但不包…

    python 2023年6月5日
    00
  • python模块shutil函数应用示例详解教程

    Python模块shutil函数应用示例详解教程 简介 Python中的shutil模块提供了一系列文件和文件夹操作的函数,包括复制、移动、改名、删除等操作。本文将提供一些常用的示例,帮助大家更好的使用shutil进行文件和文件夹操作。 常用函数 shutil模块提供了许多常用的函数,下面列出一些常用的函数及其功能: shutil.copy(src, dst…

    python 2023年6月2日
    00
  • Python爬虫爬取爱奇艺电影片库首页的实例代码

    下面是详细讲解 Python 爬虫爬取爱奇艺电影片库首页的实例代码的完整攻略。 准备工作 在开始爬取之前,需要安装 requests 库和 lxml 库。可以使用以下命令进行安装: pip install requests lxml 获取页面内容 首先,需要确定要爬取的目标网页。在本例中,目标网页为爱奇艺电影片库首页。 使用 requests 库可以发送网络…

    python 2023年5月14日
    00
  • python爬取网易云音乐热歌榜实例代码

    下面是详细的攻略: Python爬取网易云音乐热歌榜实例代码 Python爬虫是一种常用的数据采集方式,可以帮助我们快速获取互联网上的各种数据。本文将手把手教你如何使用Python爬取网易云音乐热歌榜,并提供两个示例说明。 分析网页结构 在爬取网页之前,我们需要先分析网页的结构。可以使用Chrome浏览器的开发者工具进行分析。在打开网页后,我们可以按下F12…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部