Thread erzeugt Fehlermeldung
Verfasst: Freitag 27. Januar 2006, 00:10
Und wieder was zum Rätseln:
Folgendes Script (Auszug) erstellt um 23:58 ein Excel-Protokoll.
Starte ich das Script um 23:59 wird das Protokoll wie zu erwarten sofort erstellt.
Starte ich es vor 23:58 und drücke den "Protokoll" Button, wird das Protokoll
ebenfalls korrekt erstellt. Starte ich aber das Script vor 23:58 und warte bis 23:58,
dann kommt folgende Fehlermeldung:
Ersetze ich im Script den Thread durch eine While-Schleife, gibt es keine Fehlermeldung, habe dann aber keinen
10 Sekunden Takt (der für den Rest der Anwendung nötig ist). Was macht der Thread, daß es zu der
Fehlermeldung kommt ?
Soviel für die Nacht , Seven
Hier das Script:
Folgendes Script (Auszug) erstellt um 23:58 ein Excel-Protokoll.
Starte ich das Script um 23:59 wird das Protokoll wie zu erwarten sofort erstellt.
Starte ich es vor 23:58 und drücke den "Protokoll" Button, wird das Protokoll
ebenfalls korrekt erstellt. Starte ich aber das Script vor 23:58 und warte bis 23:58,
dann kommt folgende Fehlermeldung:
Code: Alles auswählen
File "test2.py", line 34, in Protokoll
Report = win32com.client.Dispatch("Excel.Application")
File "C:\Programme\Python24\Lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "C:\Programme\Python24\Lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:\Programme\Python24\Lib\site-packages\win32com\client\dynamic.py", line 79, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221008, 'CoInitialize wurde nicht aufgerufen.', None, None)
10 Sekunden Takt (der für den Rest der Anwendung nötig ist). Was macht der Thread, daß es zu der
Fehlermeldung kommt ?
Soviel für die Nacht , Seven
Hier das Script:
Code: Alles auswählen
import time,sys,string,win32com.client,win32api,threading,os
from Tkinter import Tk,Button
from tkSnack import initializeSnack
root = Tk()
initializeSnack(root)
class globelvars:
fname1 = ''
fname2 = ''
loct = 0
gv = globelvars()
def Beenden(event=None):
T.cancel()
sys.exit(0)
def Handle():
global T
T = threading.Timer(10, Handle) #Alle 10 Sekunden pruefen
T.start()
gv.loct = time.localtime()
gv.fname2 = 'Protokoll' + "_%02d%02d" % (gv.loct[2],gv.loct[1]) + str(gv.loct[0])[2:]
if gv.loct[3] == 23 and gv.loct[4] >= 58: #Um 23:58 Protokoll erstellen
if not os.path.isfile("G:/tempfiles/" + gv.fname2 + ".xls"):
Protokoll()
def Protokoll():
Report = win32com.client.Dispatch("Excel.Application")
Report.Visible = 0
workbook = Report.Workbooks.Add()
worksheet = workbook.Worksheets('Tabelle1')
worksheet.Name = 'Ausgang'
header = ["ID","Text","Archiv","Musik ?","E-Mail / Kunde","Tel. Nr.","Eingang","Ausgang"]
width = ['6','15','25','10','20','17','17','17']
for j in range(1,9): #Kopfzeile eintragen
cell = worksheet.Cells(1,j)
cell.ColumnWidth = width[j-1]
cell.Font.Bold = 1
cell.Font.Size = 12
cell.Value = header[j-1]
"""
z = 1
for i in range(1,5):
gv.fname1 = "Bestell" + str(i) + "_%02d%02d" % (gv.loct[2],gv.loct[1]) + str(gv.loct[0])[2:]
d = open("G:/tempfiles/" + gv.fname1 + ".txt","r")
d.seek(0) #bei Byte #4 steht steht 'previous'
lst = int(d.read(4))
d.seek(32) #Daten beginnen ab Byte 32
na = d.readlines()
d.close()
for j in range(0,lst-1,11):
worksheet.Cells(z+1,1).Value = "_" + na[j][:-1] #ID, [:-1] = ohne \n
worksheet.Cells(z+1,2).Value = na[j+1][:-1] #Text
worksheet.Cells(z+1,3).Value = na[j+2][1:-1]+" "+na[j+3][1:-1]+" "+na[j+4][1:-1] #Archiv
temp = na[j+5][:-1]
trenner = string.find(temp,'/')
if temp[0:trenner] =='mit Musik':
worksheet.Cells(z+1,4).Value = 'mit Musik' #Musik
else:
worksheet.Cells(z+1,4).Value = ''
worksheet.Cells(z+1,5).Value = na[j+6][:-1] #EMail
worksheet.Cells(z+1,6).Value = na[j+7][:-1] #Telnr
worksheet.Cells(z+1,7).Value = na[j+8][:-1] #Eingang
worksheet.Cells(z+1,8).Value = na[j+9][:-1] #Ausgang
z += 1
z += 1 #Leerzeile
"""
workbook.SaveAs("G:/tempfiles/" + gv.fname2 + ".xls")
Report.Quit()
del(cell)
del(worksheet)
del(workbook)
del(Report)
protok = Button(root,font='ansifixed', text = "Protokoll ", command = Protokoll)
protok.pack()
bstop = Button(root,font='ansifixed', text = "Beenden", command = Beenden)
bstop.pack()
Handle()
root.mainloop()