Ein Python-Skript, das die Start- / Endzeit des Mac für die Anwesenheitsverwaltung verwenden möchte

Vor kurzem bin ich zu einem Arbeitsstil übergegangen, der Zeit verkauft, und habe mich daher entschlossen, die Anwesenheit zum ersten Mal seit einigen Jahren zu verwalten. Deshalb habe ich ein Skript dafür geschrieben, damit ich es als Memo belassen kann.

Bedarf

Code

Alles was Sie tun müssen, ist ** letzter Neustart ** und ** letztes Herunterfahren ** zu drücken, um zu sortieren

$ python attendance_output.py 7 <-Nehmen Sie den Monat, den Sie als Argument nehmen möchten

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 ''))

Ergebnis

Es ist in Ordnung, wenn die Daten mit dem folgenden Gefühl ausgegeben werden. Es ist sogar noch besser, später in CSV oder Tabellenkalkulation auszugeben

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

Ein Python-Skript, das die Start- / Endzeit des Mac für die Anwesenheitsverwaltung verwenden möchte
Verwendung von pip, einem Paketverwaltungssystem, das für die Verwendung von Python unverzichtbar ist
Ein Python-Skript für Mac, das unter Windows ohne verstümmelte Zeichen komprimiert wird
Ein Python-Skript, das ein GTK-Bild (Clipboard) in einer Datei speichert.
Ein Python-Skript, das Oracle-Datenbankdaten in CSV konvertiert
Verwenden Sie eine Skriptsprache für ein komfortables C ++ - Leben - OpenCV-Port Python zu C ++ -
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Ein Skript, das 0, 1 an die erste Python-Primzahl zurückgibt
Ein Python-Skript, das auf dem Mac erstellte ._DS_Store- und ._ * -Dateien löscht
Ich habe einen Docker-Container erstellt, um JUMAN ++, KNP, Python (für pyKNP) zu verwenden.
Dinge, auf die Sie beim Erstellen einer Python-Umgebung auf einem Mac achten sollten
Verwenden Sie nach dem Kauf eines neuen Mac Pyenv + Poetry, um eine Python-Umgebung zu erstellen.
[Python] Ich habe einen Dekorateur gemacht, der keinen Nutzen zu haben scheint.
Verwendung von hmmlearn, einer Python-Bibliothek, die versteckte Markov-Modelle realisiert
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 3 Schreiben Sie in eine Datei
[Python] Es war sehr praktisch, die Python-Klasse für das ROS-Programm zu verwenden.
[Python] Extrahiere △△ mit maximalem ○○ mit Pandas
[Mac] Erstellen einer virtuellen Umgebung für Python
[Python] Organisieren der Verwendung für Anweisungen
Verwendung von "deque" für Python-Daten
Verwenden Sie Django aus einem lokalen Python-Skript
Skript zum Erstellen einer Mac-Wörterbuchdatei
So führen Sie Maya Python-Skripte aus
Ich möchte eine schöne Python-Entwicklungsumgebung für meinen neuen Mac erstellen
Python-Skript zum Abrufen einer Liste von Eingabebeispielen für den AtCoder-Wettbewerb
So verwenden Sie MkDocs zum ersten Mal
Verwenden Sie vorerst Logger mit Python
Eine clevere Möglichkeit zur Zeitverarbeitung mit Python
"Python Kit", das Python-Skripte von Swift aufruft
Zubu Amateur will Python starten
Verwenden Sie Tor, um eine Verbindung von urllib2 [Python] [Mac] herzustellen.
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 7 Erstellen eines Moduls
Python-Skript, das das Azure-Status-RSS crawlt und an Hipchat sendet
Ein Python-Skript, das eine datierte CSV-Datei als Zeitpartitionstabelle in BigQuery importiert
[Python] Ich möchte nur den Index verwenden, wenn ich eine Liste mit einer for-Anweisung schleife
Ein Python-Skript, das die Anzahl der Jobs für eine bestimmte Bedingung von Indeed.com abruft
Ein Programm, das ein paar Kilogramm BMI und Standardgewicht verlangt [Python]
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird
Skript zum einfachen Erstellen einer Clientgeräteumgebung für AWS IoT (Python v2-Version)
Ein Skript, das Tweets mit bestimmten Schlüsselwörtern auf Twitter in Echtzeit an Slack überträgt.
Verwendung der NUITKA-Utilities-Hinweis-Kompilierung zum einfachen Erstellen einer ausführbaren Datei aus einem Python-Skript
"Stoppen Sie das Festschreiben japanischer Dateien für Git auf Mac> <" Vorerst habe ich ein Skript geschrieben, um nach inkompatiblen japanischen Dateien unter Mac und Linux zu suchen.
Erstellen Sie einen Datensatz mit Bildern, die für das Training verwendet werden sollen
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Ich habe eine VM erstellt, auf der OpenCV für Python ausgeführt wird
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
[Einführung in Python] Hochgeschwindigkeits-Einführung in Python für vielbeschäftigte C ++ - Programmierer
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
Erstellt eine Python-Bibliothek DateTimeRange, die Zeitbereiche verarbeitet
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
Praktisch, um Matplotlib-Unterzeichnungen in for-Anweisungen zu verwenden
[Python] Eine praktische Bibliothek, die Kanji in Hiragana konvertiert
So erstellen Sie eine Entwicklungsumgebung für TensorFlow (1.0.0) (Mac)
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
Python-Umgebungskonstruktion für Programmieranfänger (Mac OS)