3 Stimmen

Problem mit der Schreibzeile in Python

Ich habe ein sehr grundlegendes Problem. Ich bin meine ersten Schritte mit Python & Skripting im Allgemeinen zu lernen und so auch dies macht mich wundern:

Ich möchte Zeilen in eine neue Datei lesen und schreiben:

ifile=open("C:\Python24\OtsakkeillaSPSS.csv", "r")
ofile = open("C:\Python24\OtsakkeillaSPSSout.csv", "w")

#read first line with headers
line1 = ifile.readline()
print line1

#read following lines which contain data & write it to ofile
for line in ifile:
    if not line:
        break
    ofile.write(line)

Wenn ich das auf dem Bildschirm ausdrucke, bekomme ich alle meine Zeilen gut hin:

0,26100,568,8636
0,11130,555,**3570
0,57100,77,2405**
0,60120,116,1193
0,33540,166,5007
0,95420,318,2310
0,20320,560,7607
0,4300,692,3969
0,65610,341,2073
0,1720,0,0
0,78850,228,1515
0,78870,118,1222

Wenn ich es in eine Datei schreibe, fehlen mir etwa 15 Zeilen:

0,6100,948,8332
0,26100,568,8636
0,11130,555

Ich wäre dankbar, wenn mich jemand darauf hinweisen könnte, was ich nicht verstehe.

Reg,

Jaani

5voto

Tim Hoolihan Punkte 12248

Sie sollten ofile.close() gemäß den folgenden Anweisungen aufrufen Python-Dokumente .

Ich bin mir nicht sicher, ob Schreibvorgänge ohne explizites Schließen vollständig in eine Datei gespült werden.

Prüfen Sie außerdem, wie von SilentGhost erwähnt, auf leere Zeilen in Ihrer Eingabedatei.

Und wie von stefanw unten erwähnt, ist die "if break"-Anweisung in einem for in nicht notwendig.

4voto

SilentGhost Punkte 285785
#read following lines which contain data & write it to ofile
for line in ifile:
    if not line:
        continue          #break stops the loop, you should use continue
    ofile.write(line)

3voto

stefanw Punkte 10188

Die "if not line:" - Prüfung ist unnötig.

for line in ifile:
    ofile.write(line)

1voto

fabrizioM Punkte 43906

Warum verwenden Sie python2.4? Die neueste Version ist python2.6

und dann können Sie

from contextlib import nested
ipath = "C:\Python24\OtsakkeillaSPSS.csv"
opath = "C:\Python24\OtsakkeillaSPSSout.csv"
with nested(open(ipath,'r'), open(opath,'w') as ifile, ofile:

    #read first line with headers
    line1 = ifile.readline()
    print line1

    #read following lines which contain data & write it to ofile
    for line in ifile:
        ofile.write(line)

0voto

Oh, warum sieht das so dumm aus, die Formation, meine ich? Versuchen Sie es noch einmal...

Hallo,

Ich habe ein sehr grundlegendes Problem. Ich bin meine ersten Schritte mit Python & Skripting im Allgemeinen zu lernen und so auch dies macht mich wundern:

Ich möchte Zeilen in eine neue Datei lesen und schreiben:

ifile=open(" C:\Python24\OtsakkeillaSPSS.csv ", "r") ofile = open(" C:\Python24\OtsakkeillaSPSSout.csv ", "w")

erste Zeile mit Kopfzeilen lesen Zeile1 = ifile.readline() Zeile1 drucken Die folgenden Zeilen, die Daten enthalten, lesen und in die Datei schreiben

for line in ifile: if not line: break ofile.write(line)

Wenn ich das auf dem Bildschirm ausdrucke, bekomme ich alle meine Zeilen gut hin:

0,26100,568,8636 0,11130,555,3570 0,57100,77,2405 0,60120,116,1193 0,33540,166,5007 0,95420,318,2310 0,20320,560,7607 0,4300,692,3969 0,65610,341,2073 0,1720,0,0 0,78850,228,1515 0,78870,118,1222

Wenn ich es in eine Datei schreibe, fehlen mir etwa 15 Zeilen:

0,6100,948,8332 0,26100,568,8636 0,11130,555

Ich wäre dankbar, wenn mich jemand darauf hinweisen könnte, was ich nicht verstehe.

Reg,

Jaani

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X