Seite 1 von 1

Benutzereingabe - Programmöffnung - Speicherung

Verfasst: Freitag 26. Juni 2009, 10:03
von orschiro
Hallo Leute,

ich versuche momentan für mich etwas Kleines zu realisieren, habe mich jedoch in der Komplexität für mich persönlich etwas überschätzt.

Das Script soll im Grunde nichts weiter tun, als Eingaben aufzunehmen, diese in einer SQLite Datenbank zu speichern und anschließend den gesamten Inhalt der Datenbank in eine andere Datei an einer bestimmten Stelle zu schreiben.

Vom Ablauf habe ich mir das folgendermaßen vorgestellt:

1. Frage den Benutzer nach einem Titel für den Artikel
2. Öffne vim und lass den Benutzer dort seinen mehrzeiligen Artikel schreiben.
3. Speicher den Artikel und ließ den Inhalt aus.
4. Ermittle das aktuelle Datum und halte damit fest, wann der Artikel geschrieben wurde.
5. Schreibe Titel, Inhalt und Erstellungsdatum in eine Datenbank die folgenden Aufbau besitzt:
artikel (id int primary key, titel text, datum text, inhalt text);
6. Füge den so eben erstellten Artikel an einer bestimmten Stelle in einem anderen Dokument ein und beende das Programm.

Habt ihr konkrete Tipps, wie ich das am Geschicktesten realisieren könnte?
Mein erstes Problem ergibt sich beispielsweise dadurch, dass ich zwar mittels subprocess vim ausführen kann, dann aber nicht weiß, wie ich den Inhalt wieder auslesen und weiterverwenden kann.

Über ein paar Tipps würde ich mich sehr freuen. :)

Grüße

Verfasst: Freitag 26. Juni 2009, 10:40
von BlackJack
@orschiro: Du legst eine leere temporäre Datei an, gibst deren Pfad beim Aufruf vom `vim` mit, damit der Benutzer eben diese bearbeitet. Und dann wartest Du im Programm auf das Ende vom `vim`. Bei `subprocess.call()` passiert das automatisch. Danach steht in der Datei der Text. Einfach auslesen und Datei löschen. Das Modul `tempfile` könnte auch interessant sein.

Verfasst: Freitag 26. Juni 2009, 11:29
von orschiro
Hallo BlackJack,

vielen Dank für deine Antwort. Es hat funktioniert und ich bin jetzt soweit, dass ich den Artikelinhalt ausgelesen habe. Bisher erstmal dieser Code:

Code: Alles auswählen

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

import subprocess
import os

titel = raw_input('Gib bitte einen Titel ein:\n')

subprocess.call(["vim" , "artikel.html"])

inhalt = open('artikel.html', 'r')

artikel = content.read()

os.remove('artikel.html')
Jetzt würde ich gerne diesen Inhalt an eine bestimmte Stelle in einer anderen HTML Datei index.html schreiben, und zwar nachdem der erste </p> endet.

Wie kann ich das bewerkstelligen?

Verfasst: Montag 29. Juni 2009, 08:25
von noisefloor
Hallo,
Jetzt würde ich gerne diesen Inhalt an eine bestimmte Stelle in einer anderen HTML Datei index.html schreiben, und zwar nachdem der erste </p> endet.
Es sollte funktionieren, in dem du die index.html als einen String einliest, am ersten </p> splittest, den neuen Inhalt dort anhängst, den 2. Teil von index.html auch wieder anhängst und wieder speicherst.

Gruß, noisefloor