【学习笔记】Python获取磁盘、文件夹大小信息(附邮件发送)(二)

简介: 【学习笔记】Python获取磁盘、文件夹大小信息(附邮件发送)(二)

【学习笔记】Python获取磁盘、文件夹大小信息(一)中已经描述了怎么获取文件的大小,磁盘的大小。
本次笔记增加邮件服务,这样可以更好的掌握磁盘的运行状态。

发送邮件

def sendmail(sub, con):
    msg = email.mime.multipart.MIMEMultipart()
    msg['from'] = "xxx.com" # 发邮件的邮箱地址
    msg['to'] = "yyy.com" # 收邮件的邮箱地址
    msg['subject'] = sub # 邮件标题
    content = con # 邮件内容
    txt = email.mime.text.MIMEText(content)
    msg.attach(txt)
    smtp = smtplib.SMTP()
    smtp.connect('smtp.126.com') #使用的邮件服务
    smtp.login('xxx.com', 'zzz') # 登录发邮件的邮箱账号和密码
    smtp.sendmail(msg['from'], msg['to'],str(msg)) # 发邮件格式
    smtp.quit()
    
sendmail("当前磁盘的运行状态", str(ddddd), encoding='GBK' ) # str(ddddd)需要发送的内容

获取D:\image的大小,然后此文件夹会不停的写入文件,当D盘剩余空间小于5GB时,给出警告信息,并把警告信息写入log文件中,然后把log中的内容读取出来放入邮件正文,发送邮件

"""
Author:NoamaNelson
Date:2019-11-19
Discription:Get the size of D:\\image, and then this folder will keep writing files. 
When the remaining space of D disk is less than 5GB, a warning message will be given
"""

import os
import os.path
import smtplib
import email.mime.multipart
import email.mime.text
import sendmail
import psutil
import collections


def get_size(path):
    list1 = []
    fileList = os.listdir(path)  # 获取path目录下所有文件
    for filename in fileList:
        pathTmp = os.path.join(path,filename)  # 获取path与filename组合后的路径
        if os.path.isdir(pathTmp):   # 判断是否为目录
            get_size(pathTmp)        # 是目录就继续递归查找
        elif os.path.isfile(pathTmp):  # 判断是否为文件
            filesize = os.path.getsize(pathTmp)  # 如果是文件,则获取相应文件的大小
            #print('目录中的子文件大小:%d字节' % filesize)
            list1.append(filesize)      # 将文件的大小添加到列表
    print('%s 目录中的文件总大小:%d 字节' % (path, sum(list1)))
    print('%s 目录中的文件总大小: %.4f MB' % (path, (sum(list1)/1024/1024)))
    print('%s 目录中的文件总大小: %.4f GB' % (path, (sum(list1)/1024/1024/1024)))
    return sum(list1)
    
def get_disk_info():
    disk_used = {}
    for id in psutil.disk_partitions():
        if 'cdrom' in id.opts or id.fstype == '':
            continue
        disk_name = id.device.split(':')
        s = disk_name[0]
        disk_info = psutil.disk_usage(id.device)
        #print(disk_info)
        disk_used[s + '盘使用率:'] = '{}%'.format(disk_info.percent)
        disk_used[s + '剩余空间:'] = '{}GB'.format(disk_info.free // 1024 // 1024 // 1024)
    print("sdsds:%s"%disk_used)
    return disk_used

def sendmail(sub, con):
    msg = email.mime.multipart.MIMEMultipart()
    msg['from'] = "xxx.com" # 发邮件的邮箱地址
    msg['to'] = "yyy.com" # 收邮件的邮箱地址
    msg['subject'] = sub # 邮件标题
    content = con # 邮件内容
    txt = email.mime.text.MIMEText(content)
    msg.attach(txt)
    smtp = smtplib.SMTP()
    smtp.connect('smtp.126.com') #使用的邮件服务
    smtp.login('xxx.com', 'zzz') # 登录发邮件的邮箱账号和密码
    smtp.sendmail(msg['from'], msg['to'],str(msg)) # 发邮件格式
    smtp.quit()

if __name__ == "__main__":   
    #path= input("输入路径:").strip()  #指定文件路径
    log_name = 'result.log'
    with open(log_name, 'w') as f:
        path = r"D:\\image"
        disk_used1 = get_disk_info()
        for k, v in disk_used1.items():
            f.write('{}{}。\n'.format(k, v))
        list2 = get_size(path)
        f.write('%s 目录中的文件总大小:%d 字节\n' % (path, list2))
        f.write('%s 目录中的文件总大小: %.4f MB\n' % (path, (list2/1024/1024)))
        f.write('%s 目录中的文件总大小: %.4f GB\n' % (path, (list2/1024/1024/1024)))
        disk_used2 = disk_used1['D剩余空间:']
        disk_used3 = int(disk_used2.split('G')[0])
        #intlist2 = intlist1/1024/1024/1024
        if disk_used3 > 20:
            print("D剩余空间:%s"%disk_used1['D剩余空间:'])
            f.write("D剩余空间:%s"%disk_used1['D剩余空间:'])
        elif disk_used3 <= 20:
            print("D盘剩余空间为%dGB,建议停止数据存储"%disk_used3)  
            f.write("D盘剩余空间为%dGB,建议停止数据存储"%disk_used3)
    with open(log_name, 'rb') as logfile:
        sendmail("磁盘当前存储状态", str(logfile.read(), encoding='GBK'))

收到的邮件效果

在这里插入图片描述

目录
相关文章
|
4月前
|
前端开发 数据安全/隐私保护 Python
虚拟物流单号生成器, 虚拟快递单号假物流信息, 虚拟快递单号在线生成【python框架】
这个虚拟物流单号生成系统包含以下功能:支持多种主流快递公司的单号生成
|
4月前
|
数据安全/隐私保护 数据格式 Python
快递单号模拟生成器, 虚拟物流信息在线生成,虚假快递单号生成器【python】
支持多种主流快递公司生成符合各快递公司规则的快递单号自动生成收发件人信息
|
4月前
|
JSON 前端开发 API
快递单号生成器在线, 快递单号模拟生成器, 虚拟物流信息在线生成【python】
项目包含三个主要模块:快递单号生成器核心逻辑、Flask Web应用程序和前端HTML页面
|
4月前
|
JSON API 数据安全/隐私保护
车辆五项信息查询 API 的实践指南:通过Python调用赋能车辆信息标准化
本API通过车牌号快速获取车辆五项核心信息,包括品牌、登记日期、车架号等,助力二手车评估、维修、保险等场景实现数字化转型。数据源自权威公安交管库,日更同步,毫秒级响应,满足高并发需求,符合隐私保护规范,是推动汽车后市场智能化的重要工具。
247 0
|
5月前
|
API Python
VIN码查询API的实战指南:获取二手车信息以Python为例
随着机动车保有量上升,中国二手车市场迎来发展机遇。本文介绍如何通过VIN码查询API获取车辆详细信息,提升交易透明度与安全性。
138 1
|
4月前
|
安全 数据库 数据安全/隐私保护
Python办公自动化实战:手把手教你打造智能邮件发送工具
本文介绍如何使用Python的smtplib和email库构建智能邮件系统,支持图文混排、多附件及多收件人邮件自动发送。通过实战案例与代码详解,帮助读者快速实现办公场景中的邮件自动化需求。
365 0
|
9月前
|
存储 算法 API
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
1383 82
|
5月前
|
数据采集 存储 数据可视化
Python爬取招标信息并生成可视化分析报告
Python爬取招标信息并生成可视化分析报告
|
7月前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
215 23
|
9月前
|
API 开发工具 Python
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
137 1

推荐镜像

更多