Python analiza los archivos nmon en Excel con gráficos

Archivo de origen: archivo de datos nmon (existente) generado por el comando nmon.
Archivo de destino: use código Python para analizar en Excel con imágenes.

Después de una investigación en profundidad, hay dos opciones para mi propia investigación.
El primer tipo de biblioteca de dependencia: win32com
El segundo tipo de biblioteca de dependencia: xlwings.
La relación entre estas dos bibliotecas: Después de todos los aspectos de inspección y lectura de documentos oficiales, xlwings es equivalente al paquete en bibliotecas como win32com, porque la interfaz de win32com no es fácil de usar., Muy poco amigable para los novatos, por lo que xlwings agregó algunas otras bibliotecas en esta base de win32com, encapsuló una capa y abrió los documentos de uso correspondientes (comprensión personal).
El primer código de programa:

# -*- coding:utf-8 -*-

import os

import win32com.client
import pythoncom
import win32api


def get_nmon_result_file(micro_file, nmon_files, save_path=""):
    x1 = win32com.client.Dispatch("Excel.Application")
    x1.Visible = True
    x1.DisplayAlerts = False
    nmon_tuple = [0]
    result_file = []

    for index in range(0, len(nmon_files)):
        check_file(nmon_files[index], nmon_tuple)

    y = x1.Workbooks.Open(micro_file)

    if save_path != "" and len(nmon_files) == 1:
        result_file.append(save_path)
    elif save_path == "" and len(nmon_files) == 1:
        save_path = nmon_files[0] + ".xlsx"
        result_file.append(save_path)
    else:
        for i in range(0, len(nmon_files)):
            result_file.append(nmon_files[i] + ".xlsx")

    try:
        #  Main代表nmon analyser v46.xlsm VB函数入库名称
        x1.Application.Run("Main", 0, save_path, nmon_tuple)
        y.Save()
        y.Close(SaveChanges=0)
    except pythoncom.com_error as error:
        print(win32api.FormatMessage(error.excepinfo[0]))
    finally:
        x1.Quit()
        x1 = None
        return result_file


def check_file(nmon_files, file_tuple):
    if os.path.isfile(nmon_files):
        file_tuple.append(nmon_files)
    else:
        file_list = os.listdir(nmon_files)
        for index in range(0, len(file_list)):
            file_name = os.path.join(nmon_files, file_list[index])
            check_file(file_name, file_tuple)


if __name__ == '__main__':
    get_nmon_result_file(
        micro_file=os.getcwd() + '\\nmon analyser v46.xlsm',
        nmon_files=[os.getcwd() + '\\test.nmon']
    )

La segunda opción:

# -*- coding:utf-8 -*-

import os

if __name__ == '__main__':
    nmon_files = [os.getcwd() + '\\test.nmon']
    nmon_tuple = [0, os.getcwd() + '\\test.nmon']
    save_path = os.getcwd() + '\\test.nmon.xlsx'

    import xlwings as xw

    app = xw.Book('nmon analyser v46.xlsm')
    macro = app.macro('Main')
    print(save_path)
    try:

        macro(0, save_path, nmon_tuple)
        app.save()
        app.close()
    except Exception as e:
        print(str(e))
        pass

Las dos soluciones anteriores pueden analizar el archivo nmon en Excel con gráficos.
El núcleo de ellos es el código VB en nmon analyzer v46.xlsm Los dos esquemas anteriores analizan el archivo nmon llamando a la función VB en el archivo xlsm para generar el archivo excel analizado.
Desafortunadamente, debido a que los dos esquemas anteriores son todos a través de la interacción con la instancia de Excel para completar el análisis del contenido del archivo nmon mediante la función VB y luego generar el gráfico, solo se pueden usar en el entorno de Windows y no pueden instalarse en el entorno Linux.
Puede ser posible instalar wine ( una capa de compatibilidad que puede ejecutar aplicaciones de Windows en una variedad de sistemas operativos compatibles con POSIX (como Linux, Mac OSX, BSD, etc.)) en el entorno Linux , pero algunas de las API de win32 de vino son imperfectos y pueden Incapaz de lograr el propósito del análisis.

El entorno de Python que utilizo: 3.6.7 Yo
personalmente recomiendo el primero, el primero puede completar el código de Python ejecutándose sin ningún obstáculo, sin operar manualmente los distintos formularios desplegados por Excel.

La parte del lenguaje VB correspondiente al archivo xlsm ha sido modificada para completar los efectos como el guardado automático, para que el código python no se atasque durante la ejecución.

archivo nmon analyzer v46.xlsm: https://download.csdn.net/download/qq_42631707/12408336

Tal vez, podamos completar la interacción llamando al xlsm existente. Esta solución no es viable en Linux. Si desea analizar en Excel con gráficos en Linux, solo puede usar openpyxl y xlswriter después de comprender el código VB en xlsm. Bibliotecas como as, xlwt, etc. analizarlo en Excel con imágenes (recomiendo personalmente usar openpyxl, xlswriter).

Supongo que te gusta

Origin blog.csdn.net/qq_42631707/article/details/106022205
Recomendado
Clasificación