Ich habe probiert eine .doc per open() zu öffnen und auszulesen. Im Lesemodus schlägt es fehl im binären Lesemodus (rb) bekomme ich kryptische Zeichen ausgegeben.
Nun ist doc wohl proprietär? Wie kann ich mit diesen Dateien umgehen?
.doc auslesen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
doc ist nicht textähnlich sondern ein propietäres Binärformat dessen Spezifikation eigentlich schon uralt ist und über lange Zeit ein wichtiges Geschäftsgeheimnis für Microsoft war um das Word-Monopol aufrecht zu erhalten.bremer hat geschrieben:Man will mal Python für etwas sinnvolles benutzen und das Auslesen von textähnlichen Dateien ist mal wirklich einer der Standardaufgaben für Python.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo bremer!bremer hat geschrieben:Wie kann ich mit diesen Dateien umgehen?
Du kannst *.doc-Dateien in Word öffnen. Du kannst im Word Makros erstellen. Du kannst mit Python Word fernbedienen -- also als verlängerter Makro-Arm. Vieles, was du im Word mit einem Makro machen kannst, kannst du auch mit Python machen -- indem du die Makrobefehle von Python aus (über win32com) aufrufst.
Damit das funktioniert, musst du pywin32 http://sourceforge.net/projects/pywin32/ installieren.
Suche hier im Forum nach "Word win32com", dann bekommst du einen Überblick.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Nachtrag:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import win32com
import win32com.client
import os
filename = os.path.abspath("dokument.doc")
# Word-Application referenzieren (Word wird gestartet)
app = win32com.client.dynamic.Dispatch("Word.Application")
try:
# Word sichtbar machen. Kann später weggelassen werden
app.Visible = True
# Dokument öffnen
doc = app.Documents.Open(filename)
try:
# Text auslesen und anzeigen
print doc.Range().Text
finally:
# Das Dokument schließen
doc.Close()
finally:
# Word schließen
app.Quit()
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Das Dateiformat von Office 97 (das ist wohl mit .doc gemeint) ist von Microsoft inzwischen (und ich glaube schon länger) spezifiziert worden. Eine einfache Google-Suche reicht. Inzwischen ist es von einem XML- und ZIP-basierten Format abgelöst worden, das nicht minder komplex in seinem inneren Aufbau ist, dafür aber lesbarer wirkt und einfacher mit existierenden Werkzeugen bearbeitet werden kann.
Stefan
Stefan