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 (2)
Oct 31 Python
python下函数参数的传递(参数带星号的说明)
Sep 19 Python
python操作日期和时间的方法
Mar 11 Python
对Python中数组的几种使用方法总结
Jun 28 Python
python3.6.3转化为win-exe文件发布的方法
Oct 31 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 Python
python hashlib加密实现代码
Oct 17 Python
python实现FTP循环上传文件
Mar 20 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
python 利用matplotlib在3D空间中绘制平面的案例
Feb 06 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,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
php设计模式 State (状态模式)
2011/06/26 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
[01:06:39]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第三局
2016/03/02 DOTA
Python专用方法与迭代机制实例分析
2014/09/15 Python
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Django框架下在视图中使用模版的方法
2015/07/16 Python
Python 装饰器使用详解
2017/07/29 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
办加油卡单位介绍信
2014/01/09 职场文书
六一儿童节主持词
2014/03/21 职场文书
2014年团总支工作总结
2014/11/21 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
党支部综合考察意见
2015/06/01 职场文书
2019个人工作总结
2019/06/21 职场文书
详解Python中的进程和线程
2021/06/23 Python
详解在OpenCV中如何使用图像像素
2022/03/03 Python