2009-07-14 21 views
3

Ich habe ein sehr grundlegendes Problem. Ich lerne, meine ersten Schritte mit Python & Scripting im Allgemeinen und so auch das macht mir Wunder:writeline Problem in Python

I & Schreibleitungen auf neue Datei lesen will:

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 dies auf den Bildschirm drucken i Holen sie sich alle meine Linien schön gemacht:

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 schreiben, um ofile i fehlen einige 15 Zeilen am Ende:

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

Ich würde mich freuen, wenn mir jemand aufzeigen könnte, was ich nicht verstehe?

Reg,

Jaani

Antwort

5

sollten Sie ofile.close werden() aufrufen nach python docs.

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

Überprüfen Sie auch, wie SilentGhost erwähnt, auf leere Zeilen in Ihrer Eingabedatei.

Und wie stefanw unten erwähnt, dass „wenn .. break“ Anweisung in einem für nicht notwendig ist.

+0

Nun, das war schnell. Ofile.close tat es wirklich aus irgendeinem Grund weiß ich noch nicht, aber sicher wird es herausfinden. Danke Jungs !! Jaani –

+0

Wenn dies der Fall war, bitte als Antwort markieren. Der Grund dafür war, dass es den Schreibvorgang in die Datei löschte. Schreibvorgänge werden normalerweise im Speicher ausgeführt und ausgeschrieben, wenn der Puffer so groß wird oder close aufgerufen wird. –

+0

Wenn '.close' es getan hat, erzählst du uns wahrscheinlich nicht die ganze Geschichte. – SilentGhost

4
#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) 
+5

Pass fortsetzen werden! – stefanw

+0

danke stefanw. – SilentGhost

0

oh, warum es so dumm aussehen wird, ich die Bildung bedeuten? Geben Sie ihm eine andere gehen ...

hallo,

ich ein sehr einfaches Problem. Ich lerne, meine ersten Schritte mit Python & Scripting im Allgemeinen und so auch das macht mir Wunder:

I & Schreibleitungen auf neue Datei lesen will:

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

erste Zeile mit Headern lesen LINE1 = ifile.readline() Druck LINE1 Lese folgende Zeilen, die Daten enthalten & schreiben Sie es an

für Linie in ifile: wenn nicht Linie: Bruch ofile.

0,26100,568,8636 0,11130,555,3570 0,57100,77,2405: write (Linie)

, wenn ich dies auf dem Bildschirm drucken i alle meine Linien gut getan 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 schreibe ich t bis ofile i fehlen einige 15 Zeilen am Ende:

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

Ich würde mich freuen, wenn mir jemand darauf hinweisen könnte was verstehe ich nicht?

Reg,

Jaani

+0

Bitte bearbeiten Sie dies nur in Ihrer Frage, anstatt eine Antwort darauf zu geben. –

+2

und löschen Sie diese Antwort – balpha

3

Die "wenn nicht Zeile:" - die Prüfung ist nicht erforderlich.

for line in ifile: 
    ofile.write(line) 
1

Warum verwenden Sie Python2.4? die neueste ist python2.6

und dann können Sie verwenden sollten

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)