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抓取豆瓣图片并自动保存示例学习
Jan 10 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
python3.4下django集成使用xadmin后台的方法
Aug 15 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
Jul 30 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
python实现五子棋小游戏
Mar 25 Python
python实现定时压缩指定文件夹发送邮件
Dec 22 Python
selenium+Chrome滑动验证码破解二(某某网站)
Dec 17 Python
jupyter 实现notebook中显示完整的行和列
Apr 09 Python
Pandas的Apply函数具体使用
Jul 21 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
Python天气语音播报小助手
Sep 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
PHP下几种删除目录的方法总结
2007/08/19 PHP
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
express.js中间件说明详解
2019/03/19 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Python实现多进程的四种方式
2019/02/22 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
详解Python高阶函数
2020/08/15 Python
python 6种方法实现单例模式
2020/12/15 Python
python中Mako库实例用法
2020/12/31 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
高级3D打印市场:Gambody
2019/12/26 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
物流管理专业大学生自荐信
2013/10/04 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
节能环保标语
2014/06/12 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
武夷山导游词
2015/02/03 职场文书
React配置子路由的实现
2021/06/03 Javascript