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中PDB模块中的命令来调试Python代码的教程
Mar 30 Python
python实现画圆功能
Jan 25 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
python中的turtle库函数简单使用教程
Jul 23 Python
浅谈python新式类和旧式类区别
Apr 26 Python
python将视频转换为全字符视频
Apr 26 Python
django的分页器Paginator 从django中导入类
Jul 25 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
使用Python实现画一个中国地图
Nov 23 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
python 基于opencv实现图像增强
Dec 23 Python
Python爬取网站图片并保存的实现示例
Feb 26 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
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
javascript脚本编程解决考试分数统计问题
2008/10/18 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
js函数排序的实例代码
2013/07/01 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
python并发2之使用asyncio处理并发
2017/12/21 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
基于python中__add__函数的用法
2019/11/25 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
关于Keras Dense层整理
2020/05/21 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
一个精品风格的世界:Atterley
2019/05/01 全球购物
中海讯通笔试题
2015/09/15 面试题
李敖北大演讲稿
2014/05/24 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
整改落实自查报告
2014/11/05 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书
swagger如何返回map字段注释
2021/07/03 Java/Android