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实现kNN算法
Dec 20 Python
Python模块的加载讲解
Jan 15 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
python中id函数运行方式
Jul 03 Python
Python request中文乱码问题解决方案
Sep 17 Python
如何用python批量调整视频声音
Dec 22 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 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程序--记数器
2006/10/09 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
Python函数中不定长参数的写法
2019/02/13 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
详解python的super()的作用和原理
2020/10/29 Python
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
制药工程专业应届生求职信
2013/09/24 职场文书
售房协议书
2014/08/19 职场文书
教育实习指导教师评语
2014/12/31 职场文书
年会邀请函范文
2015/01/30 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
Python使用永中文档转换服务
2022/05/06 Python