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 18 Python
详解Python使用simplejson模块解析JSON的方法
Mar 24 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
关于Django外键赋值问题详解
Aug 13 Python
Python数据处理numpy.median的实例讲解
Apr 02 Python
浅谈flask源码之请求过程
Jul 26 Python
python脚本开机自启的实现方法
Jun 28 Python
python爬虫之快速对js内容进行破解
Jul 09 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 Python
python drf各类组件的用法和作用
Jan 12 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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
Laravel中Trait的用法实例详解
2016/03/16 PHP
php实现的http请求封装示例
2016/11/08 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
JavaScript 私有成员分析
2009/01/13 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
酒店采购员岗位职责
2014/03/14 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
建设工程授权委托书
2014/09/22 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
教导主任个人总结
2015/03/03 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
详解Java实践之适配器模式
2021/06/18 Java/Android
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS