Benutzereingabe - Programmöffnung - Speicherung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
orschiro
User
Beiträge: 60
Registriert: Donnerstag 11. Dezember 2008, 16:10
Kontaktdaten:

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
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.
orschiro
User
Beiträge: 60
Registriert: Donnerstag 11. Dezember 2008, 16:10
Kontaktdaten:

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?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Antworten