zur reinen Übung habe ich ein kleines Programm in Python geschrieben, in mehreren Etappen muss ich sagen. Die Funktionsweise ergibt sich aus den Kommentaren. Könntet ihr als versierte Programmierer vielleicht mal drüber schauen, und mir sagen, was ich verbessern könte, sei es von Struktur, Aufbau, Logik, Ablauf? Nennt einfach mal alles, was euch auffällt oder was ihr anders lösen würdet.
Vielen Dank für eure Erfahrungen.
Code: Alles auswählen
#!/usr/bin/python
# -*- encoding: utf-8 -*-
import subprocess
import os
import string
import time
class Template:
def __init__(self, template):
f_in = open(template, "r")
self.htmlText = f_in.read()
f_in.close
def substitute(self, **params):
for arg in params:
replaceString = "<% " + arg + " %>"
self.htmlText = string.replace(self.htmlText,
replaceString, params[arg])
def write(self, fileName):
f_out = open(fileName, "w")
f_out.write(self.htmlText)
f_out.close()
# definiere den Titel des Artikels
titel = raw_input('Gib bitte einen Titel ein:\n')
# ermittle das Veröffentlichungsdatum
datum = time.strftime(("%A, %B %d, %Y %H:%M"),time.localtime())
# starte vim und lasse den Benutzer den Artikel in tmp.html erstellen
subprocess.call(["vim" , "tmp.html"])
inhalt = open('tmp.html', 'r')
artikel = content.read()
# startet die restliche Anwendung
if __name__ == "__main__":
# lese das Template ein
test = Template("templates/artikel.tpl")
# ersetze die Platzhalter mit dem Inhalt von oben
test.substitute(titel = titel, datum = datum, inhalt = inhalt)
# schreibe die temporäre artikel.tmp
test.write("artikel.tmp")
# lese den neuen artikel ein
a = open('artikel.tmp', 'r')
b = a.read()
# lese alle bisherigen artikel aus der text datei
z = open('artikel.txt', 'r')
y = z.read()
# schreibe den neuen artikel in die text-datenbank
x = open('artikel.txt', 'w')
x.write(b)
x.close()
# füge die alten artikel wieder an das ende der text datei
w = open('artikel.txt', 'a')
w.write(y)
w.close()
# lese die aktualisierte text datei ein
c = open('artikel.txt', 'r')
d = c.read()
# lese das index template ein
e = Template('templates/index.tpl')
# ersetze den Platzhalter 'inhalt' mit dem inhalt der aktualisierten
# textdatei
e.substitute(inhalt = d)
# gebe die aktualisierte index.html aus
e.write('index.html')
# entferne die temporären dateien
os.remove('artikel.tmp')
os.remove('tmp.html')
# lade die aktualisierte index.html auf den server
i = subprocess.Popen(['scp','index.html','hostname.tld:/verzeichnis/index.html'])
i.wait()