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语言的12个基础知识点小结
Jul 10 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
Python实现的网页截图功能【PyQt4与selenium组件】
Jul 12 Python
python使用PIL模块获取图片像素点的方法
Jan 08 Python
使用python接入微信聊天机器人
Mar 31 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
May 11 Python
Django DRF认证组件流程实现原理详解
Aug 17 Python
总结python 三种常见的内存泄漏场景
Nov 20 Python
python 基于selectors库实现文件上传与下载
Dec 31 Python
实例讲解Python中sys.argv[]的用法
Jun 03 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
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
浅谈js的setInterval事件
2014/12/05 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
Python常用的日期时间处理方法示例
2015/02/08 Python
Python ftp上传文件
2016/02/13 Python
python距离测量的方法
2018/03/06 Python
Python语言进阶知识点总结
2019/05/28 Python
python函数的作用域及关键字详解
2019/08/20 Python
Python配置文件处理的方法教程
2019/08/29 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
办公室主任职责范文
2013/11/08 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
法定代表人资格证明书
2014/09/11 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
安全生产感想
2015/08/07 职场文书
初中英语教学反思范文
2016/02/15 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
详细分析PHP7与PHP5区别
2021/06/26 PHP