.doc auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bremer
User
Beiträge: 109
Registriert: Sonntag 25. Mai 2008, 00:13

Mittwoch 25. Februar 2009, 12:59

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?
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Mittwoch 25. Februar 2009, 13:02

Ich fuerchte, Du wirst Die eine Formatspezifikation besorgen muessen, wenn Du unbedingt *.doc bearbeiten möchtest.
bremer
User
Beiträge: 109
Registriert: Sonntag 25. Mai 2008, 00:13

Mittwoch 25. Februar 2009, 13:04

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 25. Februar 2009, 13:07

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 25. Februar 2009, 13:28

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 25. Februar 2009, 13:36

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.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mittwoch 25. Februar 2009, 16:31

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
Antworten