[Python-de] close() und flush() (was: Problem mit os.spawnv)

Andreas Kaiser listen at vocote.de
Fri Mar 28 11:32:18 EST 2003


Am Freitag, 28. März 2003 11:13 schrieb Andreas Kaiser:
> Am Freitag, 28. März 2003 01:05 schrieb Andreas Kaiser:
> > Nun zu meinem Problem:
> > Wenn ich in IDLE folgendes aufrufe, funktioniert alles wie
> > beabsichtigt:
> >
> > import os
> > os.spawnv(os.P_NOWAIT, '/usr/bin/latex', ['latex', 'filename.tex'])
> >
> > Führe ich das Ganze in einem Programm aus, wo wxPython mit im Einsatz
> > ist, funktioniert die ganze Geschichte nicht, LaTex bricht mit einem
> > Fehler ab.
>
> Ich antworte mir mal selber :)
> Das Problem lag daran, dass obwohl close() aufgerufen wurde, um die
> benötigte Datei vorher zu schließen, die Datei noch leer war. Da der
> nächste Befahl nach close() os.spawnwv(...) war, lief LaTeX ins Leere.
> Ein flush() dazwischen und alles funktioniert wie erwartet.
>
KORREKTUR: mit flush() nach close() geht es nicht! Die Datei ist noch leer. 
Ich habe den os.spawnv Aufruf nun auf einen extra Button gelegt. Das 
funktioniert.

Also das geht nicht:
(Beipieldarstellung)

  def makeAll(self):
    f.write(text)
    f.close
    f.flush
    pid = os.spawnv(os.P_WAIT, '/usr/bin/latex', ['latex', 'filename.tex'])

  makeAll()

Das geht:
  
  def writeFile(self):
    f.write(text)
    f.close

  def makeLatex(self):
    pid = os.spawnv(os.P_WAIT, '/usr/bin/latex', ['latex', 'filename.tex'])

  writeFile()
  makeLatex()

Nach close() UND einem flush() sollte doch aber die Datei mit Inhalt gefüllt 
sein? Ist das ein Bug?


Debian (woody), Python 2.2.1

Grüße
Andreas





More information about the Python-de mailing list