Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

writeline problem in python

Tags:

python

I have a very basic problem. I am learning my first steps with python & scripting in general and so even this makes me wonder:

I want to read & write lines to new file:

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)

if i print this to the screen i get all my lines done nicely:

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

If i write it to ofile i end up missing some 15 lines:

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

I would appreciate if someone could point out to me what is it that i don´t understand?

Reg,

Jaani


2 Answers

You should be calling ofile.close() according to python docs.

I'm not sure that writes are fully flushed out to a file without an explicit close.

Also, as SilentGhost mentioned, check for empty lines in your input file.

And as mentioned by stefanw below, that "if.. break" statement isn't necessary in a for in.

like image 143
Tim Hoolihan Avatar answered Aug 16 '26 16:08

Tim Hoolihan


#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)
like image 30
SilentGhost Avatar answered Aug 16 '26 14:08

SilentGhost