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实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
Flask之flask-script模块使用
Jul 26 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
对Pyhon实现静态变量全局变量的方法详解
Jan 11 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
python 字典 setdefault()和get()方法比较详解
Aug 07 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
python Tkinter的简单入门教程
Apr 11 Python
windows安装python超详细图文教程
May 21 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
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
javascript常见操作汇总
2014/09/03 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
ES5新增数组的实现方法
2020/05/12 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
js实现简单的倒计时
2021/01/28 Javascript
python创建进程fork用法
2015/06/04 Python
python脚本替换指定行实现步骤
2017/07/11 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
实例详解Python模块decimal
2019/06/26 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
新电JAVA笔试题目
2014/08/31 面试题
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
服务生自我鉴定
2014/01/22 职场文书
社区工作者演讲稿
2014/05/23 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
品质保证书格式
2015/02/28 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
利用python做表格数据处理
2021/04/13 Python
Minikube搭建Kubernetes集群
2022/03/31 Servers