Hi,
erstmal sorry für den Titel aber wusste nicht wie ichs besser kurz zusammenfassen könnte
Ich habe folgendes Problem:
Ich erstelle eine art Report-Datei als pdf die mir Messergebnisse auswertet. Hierfür werden unter anderem Grafiken mit matplotlib erstellt und gespeichert die ich dann in Tabellen (zwecks Anordnung nebeneinander) in die pdf -Datei einbinde.
Nachdem ich mein pdf erstellt habe will ich nun die gespeicherten Grafiken wieder löschen, da ich sie nicht nochmal extra brauche (sind ja nun in der pdf-Datei).
Ich erhalte aber einen Fehler für die Grafiken in der letzten Tabelle die erstellt wird: Error: [Errno 13] Permission denied: 'rta_cpu@TASK_P_1MS_rt.png'
Wenn ich die Erstellung des pdf auskommentiere. Also das "report.build(data)" dann löscht er alle Grafiken ohne zu meckern.
Es scheint also, dass der build befehl von ReportLab.platypus die Grafiken der letzten Tabelle noch irgendwie besetzt. Auch wenn die Tabbelle nicht das letzte Element in dem pdf ist.
Hatt vielleicht irgendjemand hier eine Idee wie ich die Grafik-Dateien freigeben kann um sie gleich mit den anderen zu löschen???
Danke schomal für jeden hilfreichen Tipp.
ReportLab: Dateien löschen nach pdf Erstellung
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Da hält wohl Reportlab irgendwelche Referenzen offen und du nutzt Windows (denn unter Linux kannst du geöffnete Dateien durchaus löschen). Du solltest mal versuchen die PDF generierung komplett abzuschließen, dann müsste Reportlab die Referenzen fallen lassen (persönlich habe ich Reportlab vor längerer Zeit durch pdfLaTeX ersetzt). Am besten du zeigst auch ein wenig relevanten Code.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
So ... nach einiger abwesenheit wieder da
Also ich wüsste jetzt nicht wie ich die PDF erstellung noch weiter abschließen sollte
Hier mal ein wenig Code:
Also ich wüsste jetzt nicht wie ich die PDF erstellung noch weiter abschließen sollte
Hier mal ein wenig Code:
Code: Alles auswählen
a = lst.append
Pics = []
#Write Details
for task in tasks:
... bisschen anderer code ...
#Add Images
ImageS = (self.CreateImages(task, graphsettings))
if len(ImageS) > 0:
for i in ImageS:
Pics.append(i)
ImgTableData = []
for i in range(0,len(ImageS),2):
TmpData = []
IMG = Image(ImageS[i], width = 8*cm, height = 6*cm)
TmpData.append(IMG)
try:
IMG = Image(ImageS[i+1], width = 8*cm, height = 6*cm)
TmpData.append(IMG)
except:
pass
ImgTableData.append(TmpData)
Widths = [8.1*cm, 8.1*cm]
Heights = []
for w in ImgTableData:
Heights.append(6.1*cm)
ImgTable = Table(ImgTableData, colWidths = Widths, rowHeights = Heights)
a(ImgTable)
a(Spacer(0.5*cm, 0.5*cm))
a(CondPageBreak(5*cm))
#create PDF
rep.build(lst)
#delete Images
for i in Pics:
os.remove(i)
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Indem du ``save()`` aufrufst, wie in der Dokumentation beschrieben, nehme ich mal an.Gopfish hat geschrieben:Also ich wüsste jetzt nicht wie ich die PDF erstellung noch weiter abschließen sollte
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich bin jetzt ein wenig weiter gekommen, wobei mir das Ergebnis total unschlüssig vorkommt.
Ich habe den letzten 'ImgTable' und 'ImgTableData' nun vor dem build einfach mit anderen Daten überschrieben um ggf die Referenzen freizugeben.
Nun bleiben mir statt 4 Images noch 2 übrig die er nicht löschen kann.
Hat irgendwer noch ne Idee dazu??
Gibts vielleicht eine möglichkeit die Dateien unter Windows irgendwie "gewaltsam" zu löschen auch wenn sie benutzt werden?
Ich habe den letzten 'ImgTable' und 'ImgTableData' nun vor dem build einfach mit anderen Daten überschrieben um ggf die Referenzen freizugeben.
Nun bleiben mir statt 4 Images noch 2 übrig die er nicht löschen kann.
Hat irgendwer noch ne Idee dazu??
Gibts vielleicht eine möglichkeit die Dateien unter Windows irgendwie "gewaltsam" zu löschen auch wenn sie benutzt werden?