Python-Programm, das ical-Daten in Text konvertiert

Die aus dem OS X-Kalender und Google Kalender exportierten Daten haben ein ical-Format, aber es ist etwas unpraktisch, sie anzuzeigen, selbst wenn sie als vergangener Datensatz gespeichert sind, also eine Textdatei mit Datum und Uhrzeit sowie dem Ereignisnamen in einer Zeile Ich wollte es behalten. Ich suchte im Internet und fand das icalendar-Paket für Python.

Icalendar-Bibliothekspaket für Python

Laden Sie das Paket, das das ical-Format in Python verarbeitet, von der folgenden Site herunter.

https://pypi.python.org/pypi/icalendar

Zu dem Zeitpunkt, als ich es heruntergeladen habe, war es icalendar 3.10 und es unterstützt Python 2.6, 2.7 und 3.3+.

Paketinstallation

Entpacken Sie die von oben heruntergeladene ZIP-Datei, verschieben Sie sie in diesen Ordner im Terminal und installieren Sie sie mit dem folgenden Befehl.

$ python setup.py install



## Ein Programm, das Ereignisse aus medizinischen Daten abruft
 Das Python-Programm, das eine Datei im ical-Format liest und in die Standardausgabe ausgibt, lautet wie folgt.

 Die Verwendung ist wie folgt


#### **`$ python iCal2txt.py file | sort > output file`**
```py file | sort > output file


 Anwendungsbeispiel: `` `$ python iCal2txt.py yotei2016.ical | sort> calendar2016.txt`` `
 Jetzt wird "calendar2016.txt" als Textdaten ausgegeben, die Datum und Uhrzeit sowie den Ereignisnamen aus den Daten von "yotei2016.ical" extrahieren und nach Datum und Uhrzeit sortieren.

 Die Python-Programmquelle lautet wie folgt


#### **`iCal2txt.py`**
```python

#!/usr/bin/python
# -*- coding: utf-8 -*-

import codecs
import sys
from icalendar import Calendar, Event
from datetime import datetime

argvs = sys.argv
fin = codecs.open(argvs[1])
cal = Calendar.from_ical(fin.read())
body = ""
for ev in cal.walk():
    if ev.name == 'VEVENT':
        start_dt = ev.decoded("dtstart")
        end_dt = ev.decoded("dtend")
        summary = ev['summary'].encode('utf-8')
        print "{start} - {end} : {summary}".format(start=start_dt.strftime("%Y/%m/%d %H:%M"), end=end_dt.strftime("%Y/%m/%d %H:%M"), summary=summary)
        

Wann war dieses Ereignis mit dieser Datei? Es ist leicht herauszufinden.

Früher habe ich ein Skript geschrieben, das eine ähnliche Datei mit AppleScript aus einer iCal-App abruft, aber das Schreiben in Python ist ziemlich einfach und ich mag Python. (Weil es ein Paket gab)

(Ergänzung) Ausgabe in eine Datei mit der Erweiterung des Eingabedateinamens als .txt

Wenn Sie nicht sortieren müssen, ist es schwierig, die Ausgabedatei anzugeben. Daher habe ich dem Namen der Eingabedatei .txt hinzugefügt und diese ausgegeben.

ical2txt2.py


#!/usr/bin/python
# -*- coding: utf-8 -*-

import codecs
import os
import sys
from icalendar import Calendar, Event
from datetime import datetime

argvs = sys.argv
fin = codecs.open(argvs[1])
cal = Calendar.from_ical(fin.read())
fin.close()
ldata = ""
for ev in cal.walk():
    if ev.name == 'VEVENT':
        start_dt = ev.decoded("dtstart")
        end_dt = ev.decoded("dtend")
        summary = ev['summary'].encode('utf-8')
        ldata += "{start} - {end} : {summary}".format(start=start_dt.strftime("%Y/%m/%d %H:%M"), end=end_dt.strftime("%Y/%m/%d %H:%M"), summary=summary) + os.linesep
fname,ext = (sys.argv[1]).split(".",1)
fout = fname + ".txt"
f = codecs.open(fout, "w")
f.write(ldata)
f.close()

(Ergänzung 2) Geben Sie das sortierte Ergebnis in eine TXT-Datei aus

Beim Sortieren im Programm wurden die Zeichen verstümmelt, daher habe ich versucht, vor dem Sortieren wie oben beschrieben auszugeben, aber ich konnte die verstümmelten Zeichen entfernen. Die Quelle ist wie folgt. Ändern Sie den Ausgabezeilen-Feedcode entsprechend Ihrer Umgebung. (Da das Verhalten von `` `os.linesep``` seltsam war, wird der Zeilenvorschubcode direkt angegeben.)

Anwendungsbeispiel: `$ python ical2txt.py yotei2016.ics `

ical2txt3.py


#!/usr/bin/python
# -*- coding: utf-8 -*-

import codecs
import os
import sys
from icalendar import Calendar, Event
from datetime import datetime

argvs = sys.argv
fin = codecs.open(argvs[1])
cal = Calendar.from_ical(fin.read())
fin.close()
li = []
for ev in cal.walk():
    if ev.name == 'VEVENT':
        start_dt = ev.decoded("dtstart")
        end_dt = ev.decoded("dtend")
        summary = ev['summary'].encode('utf-8')
        li.append("{start} - {end} : {summary}".format(start=start_dt.strftime("%Y/%m/%d %H:%M"), end=end_dt.strftime("%Y/%m/%d %H:%M"), summary=summary).decode('utf-8'))
li.sort()
fname,ext = (sys.argv[1]).split(".",1)
fout = fname + ".txt"
f = codecs.open(fout, "w")
for ld in li:
    f.write(ld.encode('utf-8') + "\n")
f.close()

Recommended Posts

Python-Programm, das ical-Daten in Text konvertiert
Python-Programm, das die Zeitnutzung aus icalendar-Daten aggregiert
Ein Python-Skript, das Oracle-Datenbankdaten in CSV konvertiert
[Python] Ein Programm, das die Partitur rundet
Ein Python-Programm, das die Größe eines Videos ändert und es in ein Bild verwandelt
Ein Programm, das doppelte Anweisungen in Python entfernt
Site, die den Curl-Befehl in eine Anforderung konvertiert
[Python] Ein Programm, das die Anzahl der Täler zählt
Empfangen Sie Wörterbuchdaten von Python-Programmen mit AppleScript
Python, das viele Excel zu einem Excel zusammenführt
Bis Sie Daten in eine Tabelle in Python einfügen
Ein Server, der POST-Daten mit flask / python wiedergibt
[Python] Eine praktische Bibliothek, die Kanji in Hiragana konvertiert
[Python] Ein Programm, das die Positionen von Kängurus vergleicht.
Programm, das die CSV-Daten der Transaktionshistorie der SBI Securities-Aktie zusammenfasst [Python3]
Ich habe einen Python-Text gemacht
Python-Programm von "Buch, das schwieriges Programmieren leicht lehrt"
Ein Allzweckprogramm, das Linux-Befehlszeichenfolgen mit Python formatiert
Eine Funktion, die iterable in Python in N Teile unterteilt
Veröffentlichung einer Bibliothek, die Zeichendaten in Python-Bildern verbirgt
Ein Programm, das bestimmte Zeichen aus dem eingegebenen Text entfernt
AnimeGAN Yaru (Windows10, Python3.6), das Live-Aufnahmen in Anime-Stil konvertiert
White-Box-Cartoonisierung, die Live-Aufnahmen in Anime-Stil konvertiert (Windows10, Python3.6)
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
[Python] Ein Programm, das durch Kombinieren von Ganzzahlen ein zweidimensionales Array erstellt
[Python] Ein Programm, das die häufigsten Vogeltypen findet
[Python] Eine Geschichte, die in eine Rundungsfalle zu geraten schien
[Ev3dev] Erstellen Sie ein Programm, das das LCD (Bildschirm) mit Python erfasst
Ein Programm, das bestimmt, ob eine in Python eingegebene Zahl eine Primzahl ist
[Python-Algorithmus] Ein Programm, das einige deutsche Antworten aus einer Suche mit Tiefenpriorität ausgibt
Beim Schreiben eines Programms in Python
[Python] Ein Programm, das den Inhalt der Liste nach links dreht
[Python] Ein Programm, das ein Paar findet, das durch einen bestimmten Wert geteilt werden kann
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
[Python] Ein Programm, das die Anzahl der gepaarten Socken berechnet
Python-E-Book-Zusammenfassung nützlich für die frei lesbare Datenanalyse
Erstellt Simple SQLite, eine Python-Bibliothek, die das Erstellen / Einfügen von SQLite-Tabellen vereinfacht
Code lesen von faker, einer Bibliothek, die Testdaten in Python generiert
Ich habe ein Pay-Management-Programm in Python erstellt!
Python3 + Pyperclip, der den kopierten Text neu schreibt
Schreiben Sie ein Caesar-Verschlüsselungsprogramm in Python
[Python] Erstellen Sie einen LineBot, der regelmäßig ausgeführt wird
Eine typisierte Welt, die mit Python beginnt
Ich habe in Python ein Programm erstellt, das FX-CSV-Daten liest und eine große Anzahl von Diagrammbildern erstellt
[Python, PyPDF2] Ein Skript, das ein verbreitetes PDF in zwei links und rechts unterteilt
[Anfänger] Was passiert, wenn ich ein Programm schreibe, das in Python auf PHP läuft?
Formatieren Sie DataFrame-Daten mit Pytorch in ein Formular, das mit NN trainiert werden kann
Ich möchte ein Programm ausführen und verteilen, das die Größe von Bildern in Python3 + Pyinstaller ändert
[Python] Ein Programm, das die minimalen und maximalen Werte ohne Verwendung von Methoden findet
[Python] Ein Programm, das die Differenz zwischen diagonalen Gesamtwerten berechnet
[Python] Ein Programm, das die Anzahl der Aktualisierungen der höchsten und niedrigsten Datensätze berechnet
Erstellen Sie eine Web-App, die PDF mit Flask und PyPDF2 in Text konvertiert
Ein Programm, das von Python zu einem bestimmten Zeitpunkt eine feste E-Mail-Menge sendet
Skript zum Konvertieren zwischen Django-Sprachdatei (PO) und tabulatorgetrenntem Text (TSV)
Erstellen Sie solche Testdaten mit Python (Teil 1)
Ein Memo, das ich schnell in Python geschrieben habe
[Python / Tkinter] Eine Klasse, die einen scrollbaren Frame erstellt