- Is it safe to mix readline() and line iterators in python file processing?
- FI = open("myfile.txt")
- FI.readline() # disregard the first line
- for line in FI:
- my_process(line)
- FI.close()
- with open('myfile.txt') as f:
- try:
- header = next(f)
- except StopIteration as e:
- print "File is empty"
- for line in f:
- # do stuff with line
- with open("myfile.txt") as f:
- next(f)
- for line in f:
- my_process(line)
- 1AA
- 2BB
- 3CC
- 4DD
- 5EE
- 6FF
- 7GG
- 8HH
- 9II
- 10j
- 11k
- 12l
- 13m
- 14n
- 15o
- FI = open("rara.txt",'rb')
- lineR = FI.readline()
- print repr(lineR)+' len=='+str(len(lineR))+
- ' FI.tell() after FI.readline() : ',FI.tell(),'n'
- cnt = 0
- for line in FI:
- cnt += 1
- print 'cnt=='+str(cnt)+' '+repr(line)+' len=='+str(len(line))+
- " FI.tell() after 'line in FI' : ",FI.tell()
- if cnt==4:
- break
- print "nFI.tell() after iteration 'for line in FI' : ",FI.tell(),'n'
- lineR = FI.readline()
- print repr(lineR)+' len=='+str(len(lineR))+
- ' FI.tell() after FI.readline() : ',FI.tell()
- lineR = FI.readline()
- print repr(lineR)+' len=='+str(len(lineR))+
- ' FI.tell() after FI.readline() : ',FI.tell(),'n'
- for line in FI:
- print 'cnt=='+str(cnt)+' '+repr(line)+' len=='+str(len(line))+
- " FI.tell() after 'line in FI' : ",FI.tell()
- print "nFI.tell() after iteration 'for line in FI' : ",FI.tell(),'n'
- '1AArn' len==5 FI.tell() after FI.readline() : 5
- cnt==1 '2BBrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==2 '3CCrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==3 '4DDrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==4 '5EErn' len==5 FI.tell() after 'line in FI' : 75
- FI.tell() after iteration 'for line in FI' : 75
- Traceback (most recent call last):
- File "E:PythonNNN codesesssssai.py", line 16, in <module>
- lineR = FI.readline()
- ValueError: Mixing iteration and read methods would lose data
- FI = open("rara.txt",'rb')
- lineR = FI.readline()
- print repr(lineR)+' len=='+str(len(lineR))+
- ' FI.tell() after FI.readline() : ',FI.tell(),'n'
- cnt = 0
- for line in FI:
- cnt += 1
- print 'cnt=='+str(cnt)+' '+repr(line)+' len=='+str(len(line))+
- " FI.tell() after 'line in FI' : ",FI.tell()
- if cnt==4:
- pos = FI.tell()
- break
- print "nFI.tell() after iteration 'for line in FI' : ",FI.tell(),'n'
- FI.seek(pos)
- lineR = FI.readline()
- print repr(lineR)+' len=='+str(len(lineR))+
- ' FI.tell() after FI.readline() : ',FI.tell()
- lineR = FI.readline()
- print repr(lineR)+' len=='+str(len(lineR))+
- ' FI.tell() after FI.readline() : ',FI.tell(),'n'
- for line in FI:
- print 'cnt=='+str(cnt)+' '+repr(line)+' len=='+str(len(line))+
- " FI.tell() after 'line in FI' : ",FI.tell()
- print "nFI.tell() after iteration 'for line in FI' : ",FI.tell(),'n'
- '1AArn' len==5 FI.tell() after FI.readline() : 5
- cnt==1 '2BBrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==2 '3CCrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==3 '4DDrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==4 '5EErn' len==5 FI.tell() after 'line in FI' : 75
- FI.tell() after iteration 'for line in FI' : 75
- '' len==0 FI.tell() after FI.readline() : 75
- '' len==0 FI.tell() after FI.readline() : 75
- FI.tell() after iteration 'for line in FI' : 75
- FI = open("rara.txt",'rb')
- lineR = FI.readline()
- print repr(lineR)+' len=='+str(len(lineR))+
- ' FI.tell() after FI.readline() : ',FI.tell(),'n'
- cnt = 0
- pos = FI.tell()
- for line in FI:
- cnt += 1
- pos += len(line)
- print 'cnt=='+str(cnt)+' '+repr(line)+' len=='+str(len(line))+
- " FI.tell() after 'line in FI' : ",FI.tell()
- if cnt==4:
- break
- print "nFI.tell() after iteration 'for line in FI' : ",FI.tell()
- print " pos after iteration 'for line in FI' : ",pos,'n'
- FI.seek(pos)
- lineR = FI.readline()
- print repr(lineR)+' len=='+str(len(lineR))+
- ' FI.tell() after FI.readline() : ',FI.tell()
- lineR = FI.readline()
- print repr(lineR)+' len=='+str(len(lineR))+
- ' FI.tell() after FI.readline() : ',FI.tell(),'n'
- cnt = 0
- for line in FI:
- cnt += 1
- print 'cnt=='+str(cnt)+' '+repr(line)+' len=='+str(len(line))+
- " FI.tell() after 'line in FI' : ",FI.tell()
- print "nFI.tell() after iteration 'for line in FI' : ",FI.tell(),'n'
- '1AArn' len==5 FI.tell() after FI.readline() : 5
- cnt==1 '2BBrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==2 '3CCrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==3 '4DDrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==4 '5EErn' len==5 FI.tell() after 'line in FI' : 75
- FI.tell() after iteration 'for line in FI' : 75
- pos after iteration 'for line in FI' : 25
- '6FFrn' len==5 FI.tell() after FI.readline() : 30
- '7GGrn' len==5 FI.tell() after FI.readline() : 35
- cnt==1 '8HHrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==2 '9IIrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==3 '10jrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==4 '11krn' len==5 FI.tell() after 'line in FI' : 75
- cnt==5 '12lrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==6 '13mrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==7 '14nrn' len==5 FI.tell() after 'line in FI' : 75
- cnt==8 '15orn' len==5 FI.tell() after 'line in FI' : 75
- FI.tell() after iteration 'for line in FI' : 75
- with open("myfile.txt","r") as source:
- rdr= iter(source)
- heading= next(rdr)
- for line in rdr:
- process( line )