[PYTHON] Jour 4 de la création d'un outil de mise en forme du journal des opérations

Jours 1 et 2 de la création d'un outil de formatage du journal des opérations Jour 3 de la création de l'outil de formatage du journal des opérations

J'ai eu une erreur en lisant le CSV

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte

CSV est comme ça (masqué)

oplog20201112.csv


Identifiant d'utilisateur,Nom du client,ID de connexion Windows,ID du terminal,IP Address,MAC Address,Nom de domaine,Heure de connexion,Heure de déconnexion,Statut de connexion,action,Nom de la fonction,Nom du fichier d'exécution(coquille),argument(Ligne de commande),Temps d'exécution,État d'exécution
"all","client-name","works","client-name","xx.xx.xx.xx","xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx     xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx  xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx ","123-456","2020/11/12 13:18:56","2020/11/12 13:23:38","Succès","Programme","Suivi des travaux","Job.exe","-context:*****","2020/11/12 13:19:23","Succès"
"all","client-name","works","client-name","xx.xx.xx.xx","xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx     xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx  xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx ","123-456","2020/11/12 13:18:56","2020/11/12 13:23:38","Succès","Programme","Menu principal","Companyxx.exe","-cfg","2020/11/12 13:18:56","Succès"
"all","client-name","works","client-name","xx.xx.xx.xx","xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx     xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx  xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx ","123-456","2020/11/12 13:18:56","2020/11/12 13:23:38","Succès","Programme","Paramètres système","Maintenance.exe","-context:*****","2020/11/12 13:19:19","Succès"
"all","client-name","works","client-name","xx.xx.xx.xx","xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx     xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx  xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx ","123-456","2020/11/12 13:18:56","2020/11/12 13:23:38","Succès","Batchjob","mst13","svc.sh","userid/password","2020/11/12 13:19:32","Succès"
"all","client-name","works","client-name","xx.xx.xx.xx","xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx     xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx  xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx ","123-456","2020/11/12 13:18:56","2020/11/12 13:23:38","Succès","Batchjob","mst13","test.sh","userid/password 0 0","2020/11/12 13:19:29","Succès"
"all","client-name","works","client-name","xx.xx.xx.xx","xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx     xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx  xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx ","123-456","2020/11/12 13:18:56","2020/11/12 13:23:38","Succès","Batchjob","mst13","test.sh","userid/password 0 0","2020/11/12 13:19:30","Succès"
"all","client-name","works","client-name","xx.xx.xx.xx","xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx     xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx  xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx ","123-456","2020/11/12 13:18:56","2020/11/12 13:23:38","Succès","Batchjob","mst13","out.sh","userid/password %JAVA% 0","2020/11/12 13:19:31","Succès"
"all","client-name","works","client-name","xx.xx.xx.xx","xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx     xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx  xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx ","123-456","2020/11/12 13:18:56","2020/11/12 13:23:38","Succès","Programme","Gestion des tâches","quevw.exe","-context:*****","2020/11/12 13:19:20","Succès"
"all","client-name","works","client-name","xx.xx.xx.xx","xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx     xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx  xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx ","123-456","2020/11/12 13:18:56","2020/11/12 13:23:38","Succès","Programme","batchjob jobid:498298","test.sh","userid/password 0 0","2020/11/12 13:19:56","Succès"
"all","client-name","works","client-name","xx.xx.xx.xx","xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx     xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx  xx-xx-xx-xx-xx-xx xx-xx-xx-xx-xx-xx ","123-456","2020/11/12 13:18:56","2020/11/12 13:23:38","Succès","Programme","batchjob jobid:498301","svc.sh","userid/password","2020/11/12 13:21:39","Succès"

Eh bien, le japonais était inclus. Nécessite un encodage.

https://techacademy.jp/magazine/21128

Ça n'a pas d'importance du tout

Traitez les données avec des pandas sur la base du fichier csv du nouveau Python Corona

C'est pourquoi ça a l'air intéressant.

Une fois que le texte a été changé en UTF-8 avec un éditeur pour confirmation, la lecture a réussi. Oh, aimeriez-vous trier par colonne de date et d'heure tel quel?

firstpandas.py


import pandas as pd

df = pd.read_csv('oplog20201112.csv')
print(df)

df_s = df.sort_values('Temps d'exécution')
print(df_s)

En conséquence, ils ont été triés par heure d'exécution tout à fait normalement. Alors c'est tout. Sauvegardons le CSV sous un nom différent.

Revenez à cette page. https://note.nkmk.me/python-pandas-to-csv/

firstpandas.py


import pandas as pd

df = pd.read_csv('oplog20201112.csv')
# print(df)

df_s = df.sort_values('Temps d'exécution')
# print(df_s)

df_s.to_csv('out.csv')

Le problème d'encodage précédent est traité ci-dessous. https://note.sngklab.jp/?p=435

firstpandas.py


import pandas as pd

df = pd.read_csv('oplog20201112.csv',encoding="SHIFT-JIS")
print(df)

df_s = df.sort_values('Temps d'exécution')
print(df_s)

df_s.to_csv('out.csv')

Je veux amener la colonne du temps d'exécution à l'extrême gauche

Puis comment déplacer la colonne. https://note.nkmk.me/python-pandas-reindex/

Comme vous pouvez le voir, cela ressemble à ça.

firstpandas.py


import pandas as pd

df = pd.read_csv('oplog20201112.csv',encoding="SHIFT-JIS")
# print(df)
df_s = df.sort_values('Temps d'exécution')
# print(df_s)
df_s = df_s.reindex(columns=['Temps d'exécution', 
                             'Nom de la fonction', 
                             'Identifiant d'utilisateur', 
                             'Nom du client', 
                             'ID de connexion Windows', 
                             'ID du terminal', 
                             'Heure de connexion', 
                             'Heure de déconnexion'])
df_s.to_csv('out.csv')

Distribution d'outils

Je veux aussi voir comment le rendre plus facile à utiliser. Il y a quelque chose qui s'appelle pyinstaller.

[pyInstaller # Créons-le réellement](https://qiita.com/hirohiro77/items/466e411fa41f144c8b2a#%E5%AE%9F%E9%9A%9B%E3%81%AB%E4%BD%9C% E6% 88% 90% E3% 81% 97% E3% 81% A6% E3% 81% BF% E3% 82% 88% E3% 81% 86)

set path=C:\Users\works\AppData\Local\Programs\Python\Python39\Scripts;%path%

Veuillez noter que cela est requis en premier. À l'invite de commande

C:\workspaces\playground>pyinstaller firstpandas.py --onefile
67 INFO: PyInstaller: 4.0
67 INFO: Python: 3.9.0
69 INFO: Platform: Windows-10-10.0.19041-SP0
70 INFO: wrote C:\workspaces\playground\firstpandas.spec
(Omission)

Ensuite, Exe a été terminé avec succès.

image.png

https://news.mynavi.jp/article/python-28/

Recommended Posts

Jour 4 de la création d'un outil de mise en forme du journal des opérations
Jour 3 de la création d'un outil de mise en forme du journal des opérations