Fehler beim einlesen einer Datei

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
tgooper
User
Beiträge: 24
Registriert: Mittwoch 8. Februar 2006, 09:12

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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

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....
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

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
tgooper
User
Beiträge: 24
Registriert: Mittwoch 8. Februar 2006, 09:12

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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?
tgooper
User
Beiträge: 24
Registriert: Mittwoch 8. Februar 2006, 09:12

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
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

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
Antworten