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 31 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
Sep 08 Python
Python实现识别手写数字大纲
Jan 29 Python
Python Tkinter实现简易计算器功能
Jan 30 Python
Python玩转PDF的各种骚操作
May 06 Python
python+jinja2实现接口数据批量生成工具
Aug 28 Python
Python坐标线性插值应用实现
Nov 13 Python
python实现的Iou与Giou代码
Jan 18 Python
python如何通过twisted搭建socket服务
Feb 03 Python
解决import tensorflow as tf 出错的原因
Apr 16 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
python Protobuf定义消息类型知识点讲解
Mar 02 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中常见的mongodb查询操作
2013/06/20 PHP
PHP7变量处理机制修改
2021/03/09 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
JQUERY操作JSON实例代码
2010/02/09 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
javascript中的面向对象
2017/03/30 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
使用Python制作微信跳一跳辅助
2018/01/31 Python
Python之列表实现栈的工作功能
2019/01/28 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
Python插件机制实现详解
2020/05/04 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
Python读写Excel表格的方法
2021/03/02 Python
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
致短跑运动员加油稿
2015/07/21 职场文书
初一数学教学反思
2016/02/17 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
Mysql 文件配置解析介绍
2022/05/06 MySQL