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


Posted in Python onFebruary 25, 2019

有时会统计某个目录下有哪些文件,每个文件的sha256及文件大小等相关信息,这里用python3写了个脚本用来实现此功能,此脚本可跨平台,同时支持windows和linux,脚本(get_dir_file_info.py)内容如下:

import os
import sys
import hashlib
 
def Usage():
 ''' usage description '''
 num = len(sys.argv)
 if num != 3:
 print("Error: please input two parameters")
 print("for example: {} path_name save_file_name".format(sys.argv[0]))
 sys.exit(1)
 
def GetFilesList():
 ''' get file list '''
 input_path_name = sys.argv[1]
 result = list()
 
 for dirpath, dirnames, filenames in os.walk(input_path_name, followlinks=True):
 for filename in filenames:
  file_path = os.path.join(dirpath, filename)
  result.append(file_path)
 
 result.sort()
 return result
 
def CalcFileSha256(filname):
 ''' calculate file sha256 '''
 with open(filname, "rb") as f:
 sha256obj = hashlib.sha256()
 sha256obj.update(f.read())
 hash_value = sha256obj.hexdigest()
 return hash_value
 
def CalcFileSize(filename):
 ''' calculate file size '''
 return os.stat(filename).st_size
 
def GetFileContent():
 ''' get file contnet '''
 files_list = GetFilesList()
 result = list()
 
 for f in files_list:
 hash = CalcFileSha256(f)
 size = CalcFileSize(f)
 file_name = os.path.basename(os.path.realpath(f))
 path_name = os.path.dirname(os.path.realpath(f))
 dictionary = {"path": path_name, "filename": file_name, "sha256": hash, "size": size}
 #print("result: {}".format(dictionary))
 result.append(dictionary)
 return result
 
def WriteToFile(contents):
 ''' write content to the specified file '''
 fp = open(sys.argv[2], "w")
 
 for content in contents:
 #print("content:", content)
 str0 = str(content)
 str1 = str0.replace("\\\\", "/")
 fp.write(str1)
 fp.write("\n")
 fp.close()
 
def ReplaceStr(src_str, new_str):
 ''' replace source string with new string '''
 contents = list()
 
 fp = open(sys.argv[2], "r")
 line = fp.readline()
 while line:
 contents.append(line)
 line = fp.readline()
 fp.close()
 
 fp = open(sys.argv[2], "w")
 for content in contents:
 str0 = content.replace(src_str, new_str)
 fp.write(str0)
 fp.close()
 
def main():
 Usage()
 WriteToFile(GetFileContent())
 ReplaceStr(" ", "")
 ReplaceStr("'", "\"")
 
if __name__ == "__main__":
 main()

执行操作如下:

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

执行结果及生成的prj_file_list.txt内容如下:

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

GitHub:Python_Test

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用python获得时间的实例说明
Mar 25 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
Apr 27 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 Python
python接口调用已训练好的caffe模型测试分类方法
Aug 26 Python
Python进度条的制作代码实例
Aug 31 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
Python字符串格式化输出代码实例
Nov 22 Python
Python中使用gflags实例及原理解析
Dec 13 Python
python实现暗通道去雾算法的示例
Sep 27 Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 Python
Python常用爬虫代码总结方便查询
Feb 25 #Python
Python使用paramiko操作linux的方法讲解
Feb 25 #Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 #Python
Python判断对象是否相等及eq函数的讲解
Feb 25 #Python
详解django中url路由配置及渲染方式
Feb 25 #Python
利用python脚本如何简化jar操作命令
Feb 24 #Python
Python中如何使用if语句处理列表实例代码
Feb 24 #Python
You might like
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
php微信公众平台开发类实例
2015/04/01 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
摘自启点的main.js
2008/04/20 Javascript
FireFox JavaScript全局Event对象
2009/06/14 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
Python max内置函数详细介绍
2016/11/17 Python
浅谈flask源码之请求过程
2018/07/26 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
中间件的定义
2016/08/09 面试题
人力资源专员自我评价怎么写
2013/09/19 职场文书
电子技术专业中专生的自我评价
2013/12/17 职场文书
铁路安全事故反思
2014/04/26 职场文书
关键在于落实心得体会
2014/09/03 职场文书
群众路线专项整治方案
2014/10/27 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技