Seite 1 von 1

.doc auslesen

Verfasst: Mittwoch 25. Februar 2009, 12:59
von bremer
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?

Verfasst: Mittwoch 25. Februar 2009, 13:02
von hendrikS
Ich fuerchte, Du wirst Die eine Formatspezifikation besorgen muessen, wenn Du unbedingt *.doc bearbeiten möchtest.

Verfasst: Mittwoch 25. Februar 2009, 13:04
von bremer
Unbedingt? Das ist eines der meistgenutzten Formate. 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.

Verfasst: Mittwoch 25. Februar 2009, 13:07
von Leonidas
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.
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.

Re: .doc auslesen

Verfasst: Mittwoch 25. Februar 2009, 13:28
von gerold
bremer hat geschrieben:Wie kann ich mit diesen Dateien umgehen?
Hallo bremer!

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
:-)

Verfasst: Mittwoch 25. Februar 2009, 13:36
von gerold
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()

Verfasst: Mittwoch 25. Februar 2009, 16:31
von sma
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