Seite 1 von 1

par-Datei öffnen

Verfasst: Freitag 19. Februar 2021, 11:49
von phytonist
Hallo,
Ich möchte Daten aus einer par-Datei (SolidEdge(CAD)-Teiledatei) einlesen.
Bisher (ohne python) habe ich diese Datei mit unzip geöffnet, dann nach einem bestimmten Eintrag gesucht und dies betrachtet. Ebenso könnte ich das mit einem Texteditor ansehen.
Das geht bei einer Datei, nicht aber bei 100. Deshalb soll ein python-Prgramm her. Die Idee ist: Die Dateien zeilenweise auslesen und die gesuchten Werte dann für alle in eine xls-Datei abspeichern.
Eigentlich ganz simpel:

Code: Alles auswählen

ein_dateiname="AHP.par"
e_datei=open(ein_dateiname,'r')
anz_zeile=0
anzt=0
zeile=e_datei.readline()
for zeile in e_datei:
Ich hatte schon andere Dateien mit open() geöffnet, bei diesen par-Dateien kommt aber ein Fehler:

Code: Alles auswählen

Ausnahme "UnicodeDecodeError"
'charmap' codec can't decode byte 0x81 in position 88: character maps to <undefined>
Es scheinen also Zeichen drin sein, die readline() nicht lesen will.

Gibt es da eine andere Funktion?

Re: par-Datei öffnen

Verfasst: Freitag 19. Februar 2021, 12:06
von __deets__
Python entzippt nicht magisch für dich. Du musst das Modul zipfile benutzen, und dann über die Inhalte zeilenweise iterieren.

Re: par-Datei öffnen

Verfasst: Freitag 19. Februar 2021, 12:08
von Sirius3
Gibt es neben ein_dateiname auch noch anderer_dateiname, oder was soll das Präfix ein bedeuten? Benutze keine Abkürzungen, die sind schwer verständlich. Das selbe gilt für e_datei, anz_zeile oder anzt.
Dateien öffnet man immer mit dem with-Statement und gibt ein Encoding an. Bei Dir ist das implizite Encoding falsch und Du mußt explizit das richtige Encoding angeben. Welches das ist, hängt davon ab, wie diese par-Datei geschrieben worden ist.
Du liest die erste Zeile der Datei ein, und machst dann nichts damit. Das sieht falsch aus. Falls das doch richtig ist, sollte das kommentiert werden.

Re: par-Datei öffnen

Verfasst: Montag 22. Februar 2021, 14:49
von phytonist
Ich ziehe den Code von oben zurück und habe hier 3 Zeilen, die das Problem verdeutlichen sollen:

Code: Alles auswählen

dateiname="AHP.par"
e_datei=open(dateiname,'r')
zeile=e_datei.readlines()
Als Fehlermeldung kommt:

Code: Alles auswählen

Ausnahme "UnicodeDecodeError"
'charmap' codec can't decode byte 0x81 in position 88: character maps to <undefined>
Es handelt sich um keine text-Datei, sondern um eine Binärdatei.
Gibt es eine andere Funktion, um dies beliebige Datei einzulesen?

Re: par-Datei öffnen

Verfasst: Montag 22. Februar 2021, 14:59
von Sirius3
Wenn Du eine Binärdatei hast, warum tust Du dann so, als ob Du eine Textdatei hättest? Denn Binärdateien haben keine Zeilen.

Code: Alles auswählen

with open(dateiname, "rb") as file:
    data = file.read()