So, dann hier mal meine allerersten beiden Scripte in Python *mirAufDieSchulterKlopf* weiss zwar nicht ob jemand durch meinen suboptimalen Code durchfindet, aber wenn es jemand tut und bessere Ideen hat, immer mal her damit, fange ja gerade erst an und will was lernen. Irgendwie hab ich das Gefühl das mein Code zimlich hässlich ist
aber naja... Hab 2 funktionen geschrieben.
Funktion 1: formatiert eine Python Datei (sehr!) einfach in eine HTML Datei, dabei hab ich einige Formatierungen für mich definiert
""" einzeiliges Kommentar """ in kursiv
""" Mehrzeiliges Kommenar als Überschrift
- Info
- Info
"""
CodeBlöcke in Grün
## definiert am Ende einer CodeZeile das der String interpretiert werden soll
- Ein Kritikpunkt hab ich schon
ich fange zwei sehr globale Fehler ab, die beim parsen der Strings vorkommen können, die ich aber nicht weiter behandel, weil es nicht lebendsbedrohlich ist, wenn mal ein Kommentar nicht interpretiert wird, vielleicht bügel ich das mal ordentlich aus
Funktion 2: formatiert meine Quellcode Datei nur um, damit die Kommentare alle auf derselben Höhe sind
Code: Alles auswählen
# coding=UTF8
import sys
import os
def generateHTML(fileOut,fileIn):
fileObjectIn=open(fileIn, "r")
fileObjectOut=open(fileOut+".html", "w")
fileObjectOut.write("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><title>"+ fileOut +"</title></head><body>")
comment=False
code=True
fileObjectOut.write("<br><table bgcolor=#90ee90 width=80%><tr><td><pre><i>")
argsList={}
for line in fileObjectIn:
if (comment and line.count("\"\"\"")==1): #Kommentar beendet
fileObjectOut.write("<br>")
comment=False;
code=True
fileObjectOut.write("<br><table bgcolor=#90ee90 width=80%><tr><td><pre><i>")
elif (line.count("\"\"\"")==1): #KommentarBlock
if (code):
fileObjectOut.write("</i></pre></td></tr></table><br>")
code=False
line=line.replace("\"\"\"", " ")
fileObjectOut.write("<b>" + line + "</b><br>")
comment=True
code=False
elif (line.count("\"\"\"")==2): #einzeiliger Kommentar
if (code):
fileObjectOut.write("</i></pre></td></tr></table><br>")
code=True
line=line.replace("\"\"\"", "")
fileObjectOut.write("<i>" + line + "</i><br>")
fileObjectOut.write("<br><table bgcolor=#90ee90 width=80%><tr><td><pre><i>")
else:
if code and line.count("=")==1 and not line.startswith("#"): #der schwirige teil: Code interpretation, a) Zuweisungen Filtern und dem dict hinzufügen
try:
if line.find("#")!=-1:
codeLine=line.partition("#")[0]
commentLine=line.partition("#")[2]
else:
codeLine=line.rstrip()
commentLine="";
codeSequenz=codeLine.split("=")[1].strip()
returnValue=eval(str(codeSequenz),argsList)
argsList.update({codeLine.split("=")[0]:returnValue})
except SyntaxError:
print "Error in Line",line
except NameError:
print "Error in Line", line
elif code and line.count("##")== 1: #print Anweisungen ausführen und in die HTML Datei schreiben
try:
if line.find("#")!=-1:
codeLine=line.partition("#")[0]
commentLine=line.partition("#")[2]
else:
codeLine=line.rstrip()
commentLine="";
codeSequenz=codeLine.strip().replace("print","")
returnValue=eval(codeSequenz,argsList)
newComment=" ".join(("#>>",str(returnValue)," : ",commentLine))
line= codeLine + newComment
except ValueError:
print "Error in Line",line
except SyntaxError:
print "Error in Line",line
fileObjectOut.write(line+"<br>")
fileObjectOut.write("</body></html>")
fileObjectIn.close()
fileObjectOut.close()
def CommentFormatter(fileName):
fileIn=open(fileName,"r")
fileOut=open(fileName +".temp","w")
CODELENGTH=75
for line in fileIn:
if line.startswith("#"):
if line.count("#")>1:
lineList=line.split("#",2)
fileOut.write("#" + lineList[1].rstrip().ljust(CODELENGTH-1) + "#" + lineList[2])
else:
fileOut.write(line)
elif line.find("#")!=-1:
lineList=line.partition("#")
fileOut.write(lineList[0].rstrip().ljust(CODELENGTH) + "#" + lineList[2])
else:
fileOut.write(line)
fileIn.close()
fileOut.close()
inName=fileIn.name.replace("\\","/")
outName=fileOut.name.replace("\\","/")
try:
os.remove(inName+"_save")
except WindowsError:
pass
os.rename(inName,inName+"_save")
os.rename(outName,inName)