Win32 Extensions für Python
lima-city → Forum → Programmiersprachen → Python
arbeiten
benutzen
bessere module
dank
datei
dokumentation
endlosschleife
glauben
http
methode
nachlesen
nutzen
option
problem
programm
referenz
schleife
url
verzeichnis
windows
-
Hallo,
ich will ein Programm schreiben, wo ich meiner Meinung nach nicht um die Win32 Extensions herumkomme, und zwar soll da
a) ein Verzeichnis nach Änderungen beobachtet werden und
b) muss geprüft werden, ob sich eine Datei in Benutzung durch ein anderes Programm befindet (eine Lock auf einer Datei ist).
Das Problem ist
a) eine richtige Referenz für PyWin32 habe ich bis jetzt noch nicht gefunden. Soll man da einfach die Microsoft-Referenz für die Win32-C++-Routinen benutzen und für Python "übersetzen"?
b) ist es überhaupt noch sinnvoll, Python für solche Fälle zu benutzen (leider ist es die einzige Programmiersprache, die ich halbwegs gut beherrsche) oder sollte man sich die Mühe machen auf C# oder PowerShell umsteigen?
Danke schon mal im voraus!
Beitrag zuletzt geändert: 28.8.2012 21:12:21 von yara -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du kannst Verzeichnisse durch eine Endlosschleife überwachen, indem du die Änderungsstempel immer wieder prüfst. Wäre einfacher als solche API zu nutzen.
Für das Prüfen, ob ein Dateilock existiert, ist es am leichtesten einfach "try and error" zu nutzen. Also stream öffnen und schauen, ob du davon lesen kannst. Wenn du nicht öffnen/lesen kannst, dann ist die Datei gelockt.
Ansonsten gibt es pywin32: http://sourceforge.net/projects/pywin32/
Liebe Grüße -
An die Lösung mit der Endlosschleife hab ich auch schon gedacht, das ist für mich keine Option.
Ja, ich hab wie gesagt vor es mit PyWin32 zu machen... nur wo ist die Referenz von PyWin32? -
Hallo yara,
bei www.activestate.com gibt es zumindest ein bisschen Dokumentation:
http://docs.activestate.com/activepython/2.5/pywin32/PyWin32.HTML
Alles andere kannst Du dann auf MSDN nachlesen:
http://msdn.microsoft.com/en-us/library/windows/desktop/hh447209%28v=vs.85%29.aspx -
Und warum ist es keine Option?
Eine Referenz scheint es nicht zu geben, aber du kannst den Quellcode normalerweise doch einsehen, oder nicht? Dann kannst du dir anschauen, was die machen, oder wie, und damit arbeiten.
An sich solltest du nicht unbedingt auf Win32 API beschränkt sein, vielleicht findest du ja bessere Module dafür. Aber ich glaube die Methode mit der Schleife und dem Try and Error ist die einfachste.
Liebe Grüße -
darkpandemic schrieb:
Ok, danke!
Hallo yara,
bei www.activestate.com gibt es zumindest ein bisschen Dokumentation:
http://docs.activestate.com/activepython/2.5/pywin32/PyWin32.HTML
Alles andere kannst Du dann auf MSDN nachlesen:
http://msdn.microsoft.com/en-us/library/windows/desktop/hh447209%28v=vs.85%29.aspx
Aber insgesamt ist es so, wie ich vermutet habe, dass man mit der Windows-API-Referenz für C++ arbeiten muss und es sich für Python "übersetzt."ggamee schrieb:
Weil das nicht mehr gut funktioniert, wenn man zu viele Dateien hat.
Und warum ist es keine Option?An sich solltest du nicht unbedingt auf Win32 API beschränkt sein, vielleicht findest du ja bessere Module dafür. Aber ich glaube die Methode mit der Schleife und dem Try and Error ist die einfachste.
Das mit dem Überprüfen der Lock hat noch das Problem, dass es neben read/write-locks auch noch reine write-locks gibt, die das Lesen erlauben, nur Schreiben nicht. Man müsste also z. B. programmieren, dass eine Datei umbenannt und wieder zurück umbenannt wird. Klappt das nicht, hat die Datei eine write-Lock. Die Probleme von dieser Lösung sind offensichtlich... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage