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

实现指定目录下文件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日

相关文章

  • Python中常见的异常总结

    Python中常见的异常总结 在Python编程中,错误和异常是不可避免的。本文将为您总结Python中常见的错误和异常,并提供相应的解决方法。 语法错误 语法错误是最常见的错误之一,通常是由于代码中的拼写错误、缺少括号、引号等语法错误导致的。解释器在运程序之前检查代码中的语法错误在发生错误时抛出SyntaxError异常。下面是一个示例,演示了语法错误的情…

    python 2023年5月14日
    00
  • Python解析命令行读取参数–argparse模块使用方法

    Python解析命令行读取参数–argparse模块使用方法 在Python中,解析命令行并读取参数可以使用argparse模块。本篇攻略将详细介绍argparse模块的使用方法,包括示例说明。 一、argparse模块概述 argparse模块是Python标准库中的一部分,用于解析命令行并读取参数。它是optparse模块的一个替代品,提供了更好的易用…

    python 2023年5月13日
    00
  • Python操作Excel的学习笔记

    下面我来详细讲解一下“Python操作Excel的学习笔记”的完整实例教程。 Python操作Excel的学习笔记 介绍 本教程将介绍如何使用Python来操作Excel文件。我们将使用xlrd、xlwt和openpyxl这三个库来读取、写入和编辑Excel文件。 安装 在开始操作Excel之前,我们需要安装xlrd、xlwt和openpyxl这三个库。在安…

    python 2023年5月13日
    00
  • Python生成元组和字典的方法

    生成元组和字典是Python中非常常见的操作,下面是Python生成元组和字典的方法的完整攻略: 生成元组 直接生成元组 在Python中,可以使用小括号()来直接生成元组,用逗号隔开元素即可: tuple1 = (1, 2, 3) print(tuple1) 这会输出 (1, 2, 3),表示一个包含三个元素的元组。 使用内建函数生成元组 Python中有…

    python 2023年5月13日
    00
  • python设置中文界面实例方法

    设置Python的中文界面,实际上就是将Python的默认编码设置为UTF-8,同时修改输出流的字符集为UTF-8。这样,Python在输出中文时就能够正确的显示中文字符,避免出现乱码。 下面是具体的步骤: 打开Python交互式界面或在Python脚本中添加以下代码: import sys # 修改输出流字符集 sys.stdout.reconfigure…

    python 2023年5月20日
    00
  • 基于Python实现ComicReaper漫画自动爬取脚本过程解析

    下面是详细讲解“基于Python实现ComicReaper漫画自动爬取脚本过程解析”的攻略: 简介 ComicReaper是一款基于Python的漫画自动爬取脚本程序,它可以自动的下载指定网站的漫画,方便漫画爱好者们阅读漫画。 环境设置 在开始使用ComicReaper之前,我们需要先安装Python 3.x版本,并配置好电脑的环境变量。 安装依赖库 安装P…

    python 2023年5月14日
    00
  • Python时间整数问题

    【问题标题】:Python time integer issuePython时间整数问题 【发布时间】:2023-04-04 03:14:01 【问题描述】: 我正在尝试计算“当时”和“现在”之间的时间差。我改变了格式,以便更好地比较它(我不需要秒或纳秒等) ‘then’ 时间来自加密,并且正在被解析以进行比较,这就是我担心的错误。 def decrypt_…

    Python开发 2023年4月6日
    00
  • python k-近邻算法实例分享

    Python k-近邻算法实例分享 什么是 k-近邻算法 k-近邻算法(k-Nearest Neighbor,简称KNN)是一种基于实例的学习(instance-based learning)或者称为懒惰学习(lazy learning)的非参数化的分类和回归算法。 KNN分类算法的实现过程如下: 读取训练集数据 计算待分类实例与训练集中各个实例的相似度或距…

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