【学习笔记】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:NoamaNelsonDate:2019-11-19Discription: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 osimport os.pathimport smtplibimport email.mime.multipartimport email.mime.textimport sendmailimport psutilimport collectionsdef 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_useddef 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'))

收到的邮件成果