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的Django框架中的模版继承
Jul 16 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
Python探索之ModelForm代码详解
Oct 26 Python
你眼中的Python大牛 应该都有这份书单
Oct 31 Python
Python面向对象之继承代码详解
Jan 29 Python
Python基于pandas实现json格式转换成dataframe的方法
Jun 22 Python
Python使用微信接入图灵机器人过程解析
Nov 04 Python
Python实现变声器功能(萝莉音御姐音)
Dec 05 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
Django REST framwork的权限验证实例
Apr 02 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 24 Python
Python 循环读取数据内存不足的解决方案
May 25 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/11/22 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
如何离线执行php任务
2017/02/21 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
vue如何判断dom的class
2018/04/26 Javascript
Python实现的Kmeans++算法实例
2014/04/26 Python
Python实现的数据结构与算法之链表详解
2015/04/22 Python
python re正则匹配网页中图片url地址的方法
2018/12/20 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
eBay德国站:eBay.de
2017/09/14 全球购物
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
SQL Server表分区删除详情
2021/10/16 SQL Server
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL