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字典基本操作实例分析
Jul 11 Python
使用rst2pdf实现将sphinx生成PDF
Jun 07 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
Oct 09 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
Python3并发写文件与Python对比
Nov 20 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
Dec 13 Python
python实现井字棋小游戏
Mar 04 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 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
投票管理程序
2006/10/09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
JavaScript 原型继承
2011/12/26 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
Python Pillow Image Invert
2019/01/22 Python
浅谈python3中input输入的使用
2019/08/02 Python
Django视图扩展类知识点详解
2019/10/25 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
Python 代码调试技巧示例代码
2020/08/11 Python
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
2019年Java面试必问之经典试题
2012/09/12 面试题
如何开发安全的AJAX应用
2014/03/26 面试题
学年自我鉴定
2014/01/16 职场文书
论文致谢词范文
2015/05/14 职场文书
五星级酒店宣传口号
2015/12/25 职场文书