OHwei, wer kann mir helfen? Bitte

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.
BKG
User
Beiträge: 7
Registriert: Montag 27. Dezember 2004, 16:48

Montag 27. Dezember 2004, 17:54

Dumme Frage noch, ich hoffe ich nerve net...
Kann mans so drehen, dass er das FIle gleich umändert und kein neues erzeugt? Ansonsten wenns zuviel Arbeit ist mach ich n normalen Movebefehl, auch net tragisch

Nachtrag: Haha wenigstens kennt meine Pythonversion schon nil :P
Aber ich verstehs dennoch net wieso es da noch keine Boolschen Variablen zb gibt, das hatte ja schon GW-Basic zu meinen einsteigerzeiten
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Montag 27. Dezember 2004, 18:19

Code: Alles auswählen

import string
try:
    True
except NameError:
    False, True = 0, 1

def new_calib(line):
    pos = string.find(line,"0 ")
    repl = "1 " + str(int(line[pos+2:pos+4])+22)[:2]
    return string.replace(line,line[pos:pos+4], repl, 1)

dateiname="test.tst"
infile = open(dateiname, "r")
zeilen=infile.readlines()
infile.close()
outfile = open(dateiname,"w")

chkflag = False
cline = ""
for line in zeilen:
    if cline: # Zeile gemerkt?
        if string.find(line,"</CALIB>") > -1: #schon Endtag?
            line = new_calib(cline) + line # neue Zeile davor einfuegen
        cline = "" # Zeile vergessen
    if chkflag:
        cline = line # Zeile Merken
    outfile.write(line)
    chkflag =  string.find(string.strip(line),"<CALIB") == 0 # naechste merken!

outfile.close()
Und das mit den boolschen Ausdrücken: alles was leer ist gilt als False (also [],(),0,"",{}) und der Rest als True. Das ist verdammt praktisch, da man so leichter programmieren kann. Um trotzdem Formalität reinzubringen hat man dann noch einen Typ von int abgeleitet (bool), der dem ganzem einen Namen gibt aber sich notfalls wie eine Zahl (1 oder 0) verhält. Damit sind Tricks wie dieser möglich:

Code: Alles auswählen

zahl=5
a=("ungerade","gerade")[(zahl%2)==0]#a ist nun das was zahl ist
BKG
User
Beiträge: 7
Registriert: Montag 27. Dezember 2004, 16:48

Montag 27. Dezember 2004, 18:29

File "obsbrowse.py", line 25
for line in zeilen
^
SyntaxError: invalid syntax

Lol ich glaub das System mag mich net :P

EDIT ne hat sich erledigt, ein leerzeichen zu viel. Bis ich da draufgekommen bin beim ersten Kontakt mit Python, dass Zeileneinschübe ne Rolle in der Abarbeitungsreihenfolge spielen :)

Habt dank wenn ich fertig bin poste ich den kompltten code, sobald er läuft ;:)
Gast

Montag 27. Dezember 2004, 18:53

Code: Alles auswählen

#!/usr/bin/python
import os, string, sys, time, posix
s=string
from cgi import *
try:
    True
except NameError:
        False, True = 0, 1

def new_calib(line):
    pos = string.find(line,"0 ")
    repl = "1 " + str(int(line[pos+2:pos+4])+22)[:2]
    return string.replace(line,line[pos:pos+4], repl, 1)

def parse_xmlfile(filename):
    xml_inbox=posix.environ['CONTROL_INBOX']
    infile = open(xml_inbox + '/' + filename , "r")
    zeilen = infile.readlines()
    infile.close
    outfile = open(xml_inbox + '/' + filename , "w")
    chkflag = False
    cline = ""
    ismodified = False
    for line in zeilen:
           if cline: # Zeile gemerkt?
	      if string.find(line,"</CALIB>") > -1: #schon Endtag?
		  line = new_calib(cline) + line # neue Zeile davor einfuegen
	          ismodified = True
	      cline = "" # Zeile vergessen
	   if chkflag:
	      cline = line # Zeile Merken
	   outfile.write(line)
 	   chkflag =  string.find(string.strip(line),"<CALIB") == 0 # naechste merken!
    
    outfile.close()
    return ismodified


# cgi_dir='/cgi-bin/' # change according to your needs

def usage():
	print 'usage: obsbrowse.py <directory(=../inbox/)>'

def Main():
	import traceback
	import obseval
	# configure the evaluation module
	if len(sys.argv)==2:
		fromdir=sys.argv[1]
	try:
		xmlfiles=obseval.GetXMLFileList()
		print "Content-type: text/html\n\n"
        	print '<HTML><HEAD><TITLE>Observation Browser</TITLE></HEAD><BODY>'
		print '<H1>Folgende Beobachtungen wurden noch nicht ausgewertet:</H1>'
		print '<UL>'
		for i in xmlfiles:
		      modified = parse_xmlfile(i)	
		      if modified:
		          print '<LI><A HREF="auswertung.cgi?%s"> %s</A><font color=#008000> modifiziert</font>'%(i,i)
		      else:
		          print '<LI><A HREF="auswertung.cgi?%s"> %s</A>'%(i,i)
		print '</UL>'
		print '<H1>Bitte wählen Sie eine Beobachtung zur Auswertung aus</H1>'
	        print '</BODY></HTML>'
	except:
		print "Content-type: text/html\n\n"
        	print '<HTML><HEAD><TITLE>Error in obsbrowse.py </TITLE></HEAD><BODY>'
		print '<PRE> Calling sequence was %s</PRE>'%repr(sys.argv)
		print '<PRE> %s: %s</PRE>'%(sys.exc_type,sys.exc_value)
		print '<PRE>'
		traceback.print_exc()
		print '</PRE>'
	        print '</BODY></HTML>'

if __name__=='__main__':
	Main()

So fertig die ganze Geschichte danke Euch beiden :)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 31. Dezember 2004, 13:05

Ohh, ich habe jetzt einen so schoenen Thread verpasst :(

So, jetzt brauchen wir noch eine Version fuer das erste public release von Python :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten