Ф-я получения данных о состоянии системы

import psutil
import datetime
import platform


def get_system_info():

    result = {}

    # ОС
    os_platform = platform.system()
    # Процессор
    processor = platform.processor()
    result.update({'platform': os_platform, 'processor': processor})
    # диски
    disks = psutil.disk_partitions()
    for i in disks:
        try:
            disk_usage = psutil.disk_usage(i.device)
            total = int(disk_usage .total) / 1048576
            used = int(disk_usage .used) / 1048576
            free = int(disk_usage .free) / 1048576
            percent = float(disk_usage .percent)
            disk_dict = {'total_space': total, 'used_space': used, 'free_space': free, 'free_percent': percent}
            result.update({'disk_space': disk_dict})

        except:
            pass

    # загрузка процессора
    cpu_percent = psutil.cpu_percent()
    result.update({'cpu_percent': cpu_percent})

    # аптайм
    boot_time = psutil.boot_time()
    uptime = datetime.datetime.now().timestamp() - boot_time
    result.update({'uptime': uptime})

    # оперативка:
    mem_status = psutil.virtual_memory()
    m_total = int(mem_status.total) / 1048576
    m_available = int(mem_status.available) / 1048576
    m_used = int(mem_status.used) / 1048576
    m_free = int(mem_status.free) / 1048576
    m_percent = float(mem_status.percent)
    memory_dict = {'total_mem': m_total, 'available_mem': m_available, 'used_mem': m_used,
                   'free_mem': m_free, 'free_percent_mem': m_percent}
    result.update({'memory_space': memory_dict})

    # температура процессора:
    try:
        # ToDo скорее всего надо прописать итератор для перечня  датчиков
        proc_temp = float(psutil.sensors_temperatures().current)
    except:
        proc_temp = None

    result.update({'proc_temp': proc_temp})

    return result


if __name__ == "__main__":
    res = get_system_info()
    for i in res.keys():
        print(i, res[i])

Источники:

Читать далее «Ф-я получения данных о состоянии системы»

Парсинг писем из Outlook в Python

Python-cкрипт разбора писем из папки "Входящие" Outlook. Сохранение письма как html-страницы с сохранением отображения вложенных картинок

import win32com.client
import os
import datetime
import re

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6).Items  # 6- папка Входящие Outlook
msg = inbox.GetLast() # последнее письмо в ящике

path  = r'C:\Users\user\Documents' # папка для сохранения вложений письма

while msg :
    subject = str(msg.Subject) # тема письма
    msg_date = datetime.datetime.strptime(str(msg.SentOn)[0:19], '%Y-%m-%d %H:%M:%S')
    to_list = str(msg.To).split(';') # список получателей
    sender = msg.SenderName # отправитель
    text = str(msg.Body) # текст письма
    html_text = str(msg.HTMLBody) # html код письма
    
    # сохранение вложений
    att_list=[]
    for att in msg.Attachments:
        att_name = att.FileName
        att.SaveAsFile(path + '\\' + att_name) # сохранение файла вложения
        att_list.append(att_name)  
    
    # корректировка html-кода для отражения вложенных картинок (замена адреса картинок на локальный вариант)
    if att_list:
        for fname in att_list:
            # паттерн ссылки на вставленное изображение
            pattern = '\"cid:' + fname  + '@[\w]{,20}.[\w]{,20}\"'
            html_text = re.sub(pattern, '\"' + fname + '\"', html_text, count=5)
    
    # создание  html-страницы с телом письма
    with open(path + '\\' + 'index_.html', 'w', encoding='utf8') as file:
        file.write(html_text)
    
    msg = inbox.GetPrevious() # переход к следующему письму