Un script python qui souhaite utiliser l'heure de démarrage / fin de Mac pour la gestion des présences

Récemment, je suis passé à un style de travail qui vend du temps, alors j'ai décidé de gérer la fréquentation pour la première fois depuis quelques années, alors j'ai écrit un script pour cela, donc je le laisserai comme mémo.

Exigences

code

Tout ce que vous avez à faire est d'appuyer sur ** dernier redémarrage ** et ** dernier arrêt ** pour trier

$ python attendance_output.py 7 <-Prenez le mois que vous voulez prendre comme argument

attendance_output.py


import sys                                                                                                                                     
import re
import subprocess
import dateutil.parser

def attendanceDate(month):
    output = {}
    checkMonth = [0]
    def assignDate(matchDate, func):
        parseDate = dateutil.parser.parse(matchDate)
        if checkMonth[0]:
            if checkMonth[0] is not parseDate.month: return

        if parseDate.month is month:
            dateStr = parseDate.day
            if dateStr in output:
                if job in output[dateStr]:
                    output[dateStr][job] = parseDate if func(output[dateStr][job], parseDate) else output[dateStr][job]
                else:
                    output[dateStr].update({job: parseDate})
            else:
                output[dateStr] = {job: parseDate}
            checkMonth[0] = parseDate.month

    for job, func in {'reboot': lambda x,z:x>z, 'shutdown': lambda x,z:x<z}.items():
        for checkDate in subprocess.check_output("last %s" % job, shell=True).splitlines():
            matchObj = re.findall(r'%s\s+\~\s+([a-zA-Z]{3}\s[a-zA-Z]{3}\s+\d{1,2}\s+\d{1,2}\:\d{1,2})\s' % job, checkDate.decode('utf-8'))
            if len(matchObj): assignDate(matchObj[0], func)

    return output

for key, value in sorted(attendanceDate(int(sys.argv[1])).items(), key=lambda x: x[0]):
    print('%s/%s %s, %s' % (int(sys.argv[1]), key,
                'start %s' % value['reboot'].strftime('%H:%M') if 'reboot' in value else '',
                'end %s' % value['shutdown'].strftime('%H:%M') if 'shutdown' in value else ''))

résultat

C'est OK si les données sont sorties avec le sentiment suivant. Il est encore préférable de sortir au format CSV ou dans une feuille de calcul plus tard

6/1 start 14:14, end 14:42
6/2 start 11:44, 
6/5 start 11:56, end 22:30
6/6 start 12:00, end 19:07
6/7 start 11:51, end 19:03
6/8 start 12:15, end 12:22
6/9 start 10:17, 
6/13 start 12:04, end 19:19
6/14 start 12:10, 
6/16 start 12:26, end 18:59
6/18 start 17:50, end 18:18
6/19 start 12:29, end 19:04
6/23 start 12:03, 
6/27 start 12:26, 
6/28 start 15:48, end 18:16
6/29 start 12:40, end 19:11
6/30 start 18:30, end 21:57

Recommended Posts

Un script python qui souhaite utiliser l'heure de démarrage / fin de Mac pour la gestion des présences
Comment utiliser pip, un système de gestion de paquets indispensable pour utiliser Python
Un script python pour Mac qui zippe sans caractères déformés sous Windows
Un script Python qui enregistre une image de presse-papiers (GTK) dans un fichier.
Un script python qui convertit les données Oracle Database en csv
Utilisez un langage de script pour une vie C ++ confortable-OpenCV-Port Python vers C ++ -
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Un script qui renvoie 0, 1 attaché au premier Python prime
Un script python qui supprime les fichiers ._DS_Store et ._ * créés sur Mac
J'ai créé un conteneur Docker pour utiliser JUMAN ++, KNP, python (pour pyKNP).
Points à surveiller lors de la création d'un environnement Python sur un Mac
Après avoir acheté un nouveau Mac, utilisez pyenv + poetry pour créer un environnement Python.
[Python] J'ai fait un décorateur qui ne semble pas avoir d'utilité.
Comment utiliser hmmlearn, une bibliothèque Python qui réalise des modèles de Markov cachés
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 3 Écrire dans un fichier
[Python] Il était très pratique d'utiliser la classe Python pour le programme ROS.
[Python] Utilisez des pandas pour extraire △△ qui maximise ○○
[Mac] Création d'un environnement virtuel pour Python
[Python] Organisation de l'utilisation des instructions
Comment utiliser "deque" pour les données Python
Utiliser Django à partir d'un script Python local
Script pour créer un fichier de dictionnaire Mac
Comment exécuter des scripts Maya Python
Je veux créer un bel environnement de développement Python pour mon nouveau Mac
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
Comment utiliser MkDocs pour la première fois
Utilisez Logger avec Python pour le moment
Une manière intelligente de chronométrer le traitement avec Python
"Kit Python" qui appelle des scripts Python depuis Swift
Zubu amateur veut démarrer Python
Utilisez Tor pour vous connecter depuis urllib2 [Python] [Mac]
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 7 Comment créer un module
Script Python qui explore le flux RSS du statut Azure et le publie sur Hipchat
Un script python qui importe un fichier csv daté dans BigQuery en tant que table de partition de temps
[Python] Je souhaite utiliser uniquement l'index lors de la mise en boucle d'une liste avec une instruction for
Un script python qui obtient le nombre de travaux pour une condition spécifiée sur Indeed.com
Un programme qui demande quelques kilogrammes pour atteindre l'IMC et le poids standard [Python]
[Mac] Je souhaite créer un serveur HTTP simple qui exécute CGI avec Python
Script pour créer facilement un environnement de périphérique client pour AWS IoT (version Python v2)
Un script qui transfère les tweets contenant des mots-clés spécifiques sur Twitter vers Slack en temps réel.
Comment utiliser NUITKA-Utilities hinted-compilation pour créer facilement un fichier exécutable à partir d'un script Python
"Arrêtez de soumettre des fichiers japonais à git sur Mac> <" Pour le moment, j'ai écrit un script pour rechercher des fichiers japonais incompatibles sur Mac et Linux.
Créer un ensemble de données d'images à utiliser pour la formation
[BigQuery] Comment utiliser l'API de BigQuery pour Python -Création de table-
[Pour les débutants] Comment utiliser la commande say avec python!
J'ai essayé Python sur Mac pour la première fois.
J'ai créé une VM qui exécute OpenCV pour Python
Un mémorandum pour exécuter un script python dans un fichier bat
[Introduction à python] Introduction rapide à Python pour les programmeurs C ++ occupés
Que contient cette variable (lorsque le script Python est en cours d'exécution)
Création d'une bibliothèque Python DateTimeRange qui gère les plages horaires
[Python] Comment écrire une docstring conforme à PEP8
Pratique pour utiliser les sous-graphiques matplotlib dans l'instruction for
[Python] Une bibliothèque pratique qui convertit les kanji en hiragana
Comment créer un environnement de développement pour TensorFlow (1.0.0) (Mac)
Script Python qui crée un fichier JSON à partir d'un fichier CSV
Construction d'environnement Python pour les débutants en programmation (Mac OS)