Seite 1 von 1

Fehler beim einlesen einer Datei

Verfasst: Samstag 28. Februar 2009, 09:14
von tgooper
Hallo,

mit der Zeit beginne ich an meinen Python Kenntnissen zu zweifeln. Es sollte ja nich so schwer sein eine Datei Zeilen weise auszulesen und in eine List zu speichern. Meine Inout datei hat 128 Zeilen und mein Programm schafft es aber nur 88 Zeilen einzulesen! Wo liegt die Ursache, dass nach 88 Zeilen Schluss ist??


thanx Tgooper

Hier der Code:

Code: Alles auswählen

  with open('help.txt') as lines:
    for line_c in lines:
     try:
         pernr, dummy, periode, dummy, loa, amt1, amt2, amt3, amt11, amt12, amt13 = line_c.split(None,12) 
         gesamtlist.append((pernr, periode, loa, amt1, amt2, amt3, amt11, amt12, amt13)) 
     except ValueError:
         error = error +1
  
  print "Error einlesen", error 
  print "Laenge", len(gesamtlist)
  
  
Hier meine Inputdatei:
00007692 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007846 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007725 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007726 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007738 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007832 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007747 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007748 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007767 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007793 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007812 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007809 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007901 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007584 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007591 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007596 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007887 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007598 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007604 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007608 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007610 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007612 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007632 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007633 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007872 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007645 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007870 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007650 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007861 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
00007845 ['31', '03', '2009'] 9L13 0,00 1,00 1.853,60 0,00 1,00 1.853,60
00007568 ['31', '03', '2009'] 9L13 0,00 5,00 297,90 0,00 5,00 297,90
00000976 ['28', '02', '2009'] /553 0,00 0,00 0,00 0,00 0,00 7,80
00001044 ['28', '02', '2009'] /553 0,00 0,00 0,00 0,00 0,00 77,19
00000763 ['28', '02', '2009'] /67A 0,00 0,00 3.087,30 0,00 0,00 14,50-
00000763 ['28', '02', '2009'] /67B 0,00 0,00 3.087,30 0,00 0,00 14,50-
00000758 ['28', '02', '2009'] /RLJ 1,00 0,00 0,00 1,00 0,00 0,00
00000977 ['28', '02', '2009'] /RLJ 1,00 0,00 0,00 1,00 0,00 0,00
00000900 ['28', '02', '2009'] /RLJ 1,00 0,00 0,00 1,00 0,00 0,00
00001041 ['28', '02', '2009'] /RLJ 1,00 0,00 0,00 1,00 0,00 0,00
00001011 ['28', '02', '2009'] /RLJ 1,00 0,00 0,00 1,00 0,00 0,00
00001041 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00001016 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000952 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000998 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00001061 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000921 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000781 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000956 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000777 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00001043 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000763 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000873 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000960 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000963 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00001059 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00001031 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00001053 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00001003 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000822 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000987 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000818 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00001055 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000815 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00000937 ['28', '02', '2009'] 7R01 0,00 0,00 0,00 0,00 0,00 0,00
00058679 ['28', '02', '2009'] /67A 0,00 0,00 4.199,00 0,00 0,00 7,30-
00058680 ['28', '02', '2009'] /67A 0,00 0,00 4.610,80 0,00 0,00 7,30-
00058878 ['28', '02', '2009'] /67A 0,00 0,00 4.639,80 0,00 0,00 7,30-
00058799 ['28', '02', '2009'] /67A 0,00 0,00 4.610,80 0,00 0,00 7,30-
00058694 ['28', '02', '2009'] /67A 0,00 0,00 3.676,30 0,00 0,00 7,30-
00058695 ['28', '02', '2009'] /67A 0,00 0,00 4.359,61 0,00 0,00 7,30-
00058808 ['28', '02', '2009'] /67A 0,00 0,00 3.821,30 0,00 0,00 7,30-
00058696 ['28', '02', '2009'] /67A 0,00 0,00 3.821,30 0,00 0,00 7,30-
00058708 ['28', '02', '2009'] /67A 0,00 0,00 4.038,80 0,00 0,00 7,30-
00058798 ['28', '02', '2009'] /67A 0,00 0,00 4.610,80 0,00 0,00 7,30-
00058711 ['28', '02', '2009'] /67A 0,00 0,00 4.620,37 0,00 0,00 7,30-
00058914 ['28', '02', '2009'] /67A 0,00 0,00 4.969,30 0,00 0,00 7,30-
00058623 ['28', '02', '2009'] /67A 0,00 0,00 4.969,30 0,00 0,00 7,30-
00058802 ['28', '02', '2009'] /67A 0,00 0,00 4.053,30 0,00 0,00 7,30-
00058624 ['28', '02', '2009'] /67A 0,00 0,00 3.835,80 0,00 0,00 7,30-
00058625 ['28', '02', '2009'] /67A 0,00 0,00 3.821,30 0,00 0,00 7,30-
00058637 ['28', '02', '2009'] /67A 0,00 0,00 2.443,72 0,00 0,00 3,87-
00058643 ['28', '02', '2009'] /67A 0,00 0,00 4.610,80 0,00 0,00 7,30-
00058908 ['28', '02', '2009'] /67A 0,00 0,00 4.038,80 0,00 0,00 7,30-
00058644 ['28', '02', '2009'] /67A 0,00 0,00 3.821,30 0,00 0,00 7,30-
00058648 ['28', '02', '2009'] /67A 0,00 0,00 3.835,80 0,00 0,00 7,30-
00058907 ['28', '02', '2009'] /67A 0,00 0,00 4.610,80 0,00 0,00 7,30-
00058649 ['28', '02', '2009'] /67A 0,00 0,00 4.998,30 0,00 0,00 7,30-
00058650 ['28', '02', '2009'] /67A 0,00 0,00 3.835,80 0,00 0,00 7,30-
00058906 ['28', '02', '2009'] /67A 0,00 0,00 4.610,80 0,00 0,00 7,30-
00058893 ['28', '02', '2009'] /67A 0,00 0,00 3.537,60 0,00 0,00 7,30-
00058653 ['28', '02', '2009'] /67A 0,00 0,00 3.821,30 0,00 0,00 7,30-
00058891 ['28', '02', '2009'] /67A 0,00 0,00 4.371,80 0,00 0,00 7,30-
00058801 ['28', '02', '2009'] /67A 0,00 0,00 4.969,30 0,00 0,00 7,30-
00058663 ['28', '02', '2009'] /67A 0,00 0,00 4.038,80 0,00 0,00 7,30-
00058665 ['28', '02', '2009'] /67A 0,00 0,00 4.610,80 0,00 0,00 7,30-
00058667 ['28', '02', '2009'] /67A 0,00 0,00 4.612,90 0,00 0,00 7,30-
00058713 ['28', '02', '2009'] /67A 0,00 0,00 4.969,30 0,00 0,00 7,30-
00058840 ['28', '02', '2009'] /67A 0,00 0,00 4.038,80 0,00 0,00 7,30-
00058839 ['28', '02', '2009'] /67A 0,00 0,00 4.400,80 0,00 0,00 7,30-
00058838 ['28', '02', '2009'] /67A 0,00 0,00 3.821,30 0,00 0,00 7,30-
00058739 ['28', '02', '2009'] /67A 0,00 0,00 4.371,80 0,00 0,00 7,30-
00058837 ['28', '02', '2009'] /67A 0,00 0,00 4.371,80 0,00 0,00 7,30-
00058835 ['28', '02', '2009'] /67A 0,00 0,00 3.821,30 0,00 0,00 7,30-
00058833 ['28', '02', '2009'] /67A 0,00 0,00 4.328,26 0,00 0,00 6,36-
00058758 ['28', '02', '2009'] /67A 0,00 0,00 4.053,30 0,00 0,00 7,30-
00058831 ['28', '02', '2009'] /67A 0,00 0,00 3.537,60 0,00 0,00 7,30-
00058759 ['28', '02', '2009'] /67A 0,00 0,00 3.835,80 0,00 0,00 7,30-
00058830 ['28', '02', '2009'] /67A 0,00 0,00 4.371,80 0,00 0,00 7,30-
00058761 ['28', '02', '2009'] /67A 0,00 0,00 4.969,30 0,00 0,00 7,30-
00058763 ['28', '02', '2009'] /67A 0,00 0,00 4.038,80 0,00 0,00 7,30-
00058828 ['28', '02', '2009'] /67A 0,00 0,00 3.821,30 0,00 0,00 7,30-
00058765 ['28', '02', '2009'] /67A 0,00 0,00 4.038,80 0,00 0,00 7,30-
00058773 ['28', '02', '2009'] /67A 0,00 0,00 4.610,80 0,00 0,00 7,30-
00058821 ['28', '02', '2009'] /67A 0,00 0,00 4.610,80 0,00 0,00 7,30-
00058778 ['28', '02', '2009'] /67A 0,00 0,00 4.610,80 0,00 0,00 7,30-
00058781 ['28', '02', '2009'] /67A 0,00 0,00 4.969,30 0,00 0,00 7,30-
00058813 ['28', '02', '2009'] /67A 0,00 0,00 4.341,95 0,00 0,00 7,30-
00058788 ['28', '02', '2009'] /67A 0,00 0,00 4.038,80 0,00 0,00 7,30-
00058872 ['28', '02', '2009'] /67A 0,00 0,00 4.639,80 0,00 0,00 7,30-
00058714 ['28', '02', '2009'] /67A 0,00 0,00 4.625,30 0,00 0,00 7,30-
01164810 ['31', '03', '2009'] 9L13 0,00 3,00 70,41 0,00 3,00 70,41
01164963 ['31', '03', '2009'] 9L13 0,00 1,00 70,41 0,00 1,00 70,41
01164811 ['31', '03', '2009'] 9L13 0,00 1,00 52,81 0,00 1,00 52,81
01164977 ['31', '03', '2009'] 9L13 0,00 1,00 52,81 0,00 1,00 52,81
01163256 ['31', '03', '2009'] 9L13 0,00 3,00 70,41 0,00 3,00 70,41
01163255 ['31', '03', '2009'] 9L13 0,00 1,00 35,21 0,00 1,00 35,21
01164817 ['31', '03', '2009'] 9L13 0,00 1,00 136,42 0,00 1,00 136,42
01164847 ['31', '03', '2009'] 9L13 0,00 1,00 52,81 0,00 1,00 52,81

Re: Fehler beim einlesen einer Datei

Verfasst: Samstag 28. Februar 2009, 09:25
von numerix
tgooper hat geschrieben:mit der Zeit beginne ich an meinen Python Kenntnissen zu zweifeln. Es sollte ja nich so schwer sein eine Datei Zeilen weise auszulesen und in eine List zu speichern. Meine Inout datei hat 128 Zeilen und mein Programm schafft es aber nur 88 Zeilen einzulesen! Wo liegt die Ursache, dass nach 88 Zeilen Schluss ist??
Kann ich nicht reproduzieren. Ich kann die Daten komplett einlesen.

Code: Alles auswählen

gesamtlist = []
lines = open('help.txt')
for line_c in lines:
     pernr, dummy, periode, dummy, loa, amt1, amt2, amt3, amt11, amt12, amt13 = line_c.split(None,12)
     gesamtlist.append((pernr, periode, loa, amt1, amt2, amt3, amt11, amt12, amt13))
lines.close()
print len(gesamtlist)
Ausgabe: 128

Verfasst: Samstag 28. Februar 2009, 09:27
von nemomuk

Code: Alles auswählen

from __future__ import with_statement
gesamt = []
with open('asdddd') as lines:
    for line in lines:
        gesamt.append(line.split())
print gesamt
print len(gesamt)
Ich auch nicht....

Verfasst: Samstag 28. Februar 2009, 10:18
von kbr
Läuft einwandfrei. Wenn ich zuvor noch error und gesamtliste definiere, erhalte ich als output:
  • MacPro:tmp klaus$ python2.6 test.py
    Error einlesen 0
    Laenge 128

Verfasst: Samstag 28. Februar 2009, 10:33
von tgooper
Hallo,

habe den Fehler schon selber gefunden. Ich habe weiter oben im Programm vergessen, die Datei help.txt zu schließen. Nach dem Einfügen von file.close() funktioniert das Auslesen auch wieder korrekt.

Thanx
Tgooper

Verfasst: Samstag 28. Februar 2009, 12:53
von cofi
Das built-in `file' sollte man nicht überschreiben. Aber warum benutzt du einerseits Kontextmanager (with) und andererseits veraltetete try-finally-Konstrukte (ich hoffe für dich, dass du das in try-finally machst ;) ) ?

Aber wenn ich mir deinen Code so anschaue und die Inputdatei .. willst du vielleicht das CSV-Modul benutzen?

Verfasst: Samstag 28. Februar 2009, 15:03
von tgooper
Habe bis jetzt noch nichts von CSV gehört ;-(
Aber vielleicht könnte das mein gesamtes Programm schneller machen?!?
Meine original Inputdatei sieht wie folgt aus (nur ca 80 MB groß):
96963021 Maier Anton 31.03.2009 9L13 akt 0,00 2,00 1.588,80
L16: E18 Netto +/- 0,00 2,00 1.588,80
24.02.2009 Report ZP_ABR_RT_VERGLEICH 12
------------------------------------------------------------------------------------------------------------------------------------
00569523 Müller Christian 28.02.2009 /854 akt 0,00 27,00 0,00
Arbeitstage abzgl. Abw. +/- 0,00 1,00- 0,00
00055413 Huber Gerhard 28.02.2009 1361 akt 0,00 0,00 10,00
Nicht bediente Ford.Buch. +/- 0,00 0,00 816,32-
Das Programm soll folgendes ausgeben:
00055413 | 1361 | 816,32- | 10,00

Wie könnte ich das mit CSV machen??

Thanx
Tgooper

Verfasst: Sonntag 1. März 2009, 06:42
von str1442

Code: Alles auswählen

In [1]: import csv, StringIO

In [2]: a = """00007692 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
   ...: 00007846 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
   ...: 00007725 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00
   ...: 00007726 ['31', '03', '2009'] 7SZ0 0,00 0,00 0,00 0,00 0,00 0,00"""

In [3]: print [row for row in csv.reader(StringIO.StringIO(a), delimiter=" ")]
[['00007692', "['31',", "'03',", "'2009']", '7SZ0', '0,00', '0,00', '0,00', '0,00', '0,00', '0,00'],
usw etc