Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 4th, 2012  |  syntax: None  |  size: 5.46 KB  |  hits: 7  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Is it safe to mix readline() and line iterators in python file processing?
  2. FI = open("myfile.txt")
  3. FI.readline()             # disregard the first line
  4. for line in FI:
  5.     my_process(line)
  6. FI.close()
  7.        
  8. with open('myfile.txt') as f:
  9.     try:
  10.         header = next(f)
  11.     except StopIteration as e:
  12.         print "File is empty"
  13.     for line in f:
  14.         # do stuff with line
  15.        
  16. with open("myfile.txt") as f:
  17.     next(f)
  18.     for line in f:
  19.         my_process(line)
  20.        
  21. 1AA
  22. 2BB
  23. 3CC
  24. 4DD
  25. 5EE
  26. 6FF
  27. 7GG
  28. 8HH
  29. 9II
  30. 10j
  31. 11k
  32. 12l
  33. 13m
  34. 14n
  35. 15o
  36.        
  37. FI  = open("rara.txt",'rb')
  38. lineR = FI.readline()
  39. print repr(lineR)+'   len=='+str(len(lineR))+
  40.       '  FI.tell() after FI.readline() : ',FI.tell(),'n'
  41.  
  42. cnt = 0
  43. for line in FI:
  44.     cnt += 1
  45.     print 'cnt=='+str(cnt)+'   '+repr(line)+'   len=='+str(len(line))+
  46.           "  FI.tell() after 'line in FI' : ",FI.tell()
  47.     if cnt==4:
  48.         break
  49. print "nFI.tell() after iteration 'for line in FI' : ",FI.tell(),'n'
  50.  
  51.  
  52. lineR = FI.readline()
  53. print repr(lineR)+'   len=='+str(len(lineR))+
  54.       '  FI.tell() after FI.readline() : ',FI.tell()
  55. lineR = FI.readline()
  56. print repr(lineR)+'   len=='+str(len(lineR))+
  57.       '  FI.tell() after FI.readline() : ',FI.tell(),'n'
  58.  
  59. for line in FI:
  60.     print 'cnt=='+str(cnt)+'   '+repr(line)+'   len=='+str(len(line))+
  61.           "  FI.tell() after 'line in FI' : ",FI.tell()
  62. print "nFI.tell() after iteration 'for line in FI' : ",FI.tell(),'n'
  63.        
  64. '1AArn'   len==5  FI.tell() after FI.readline() :  5
  65.  
  66. cnt==1   '2BBrn'   len==5  FI.tell() after 'line in FI' :  75
  67. cnt==2   '3CCrn'   len==5  FI.tell() after 'line in FI' :  75
  68. cnt==3   '4DDrn'   len==5  FI.tell() after 'line in FI' :  75
  69. cnt==4   '5EErn'   len==5  FI.tell() after 'line in FI' :  75
  70.  
  71. FI.tell() after iteration 'for line in FI' :  75
  72.  
  73.  
  74. Traceback (most recent call last):
  75.   File "E:PythonNNN codesesssssai.py", line 16, in <module>
  76.     lineR = FI.readline()
  77. ValueError: Mixing iteration and read methods would lose data
  78.        
  79. FI  = open("rara.txt",'rb')
  80. lineR = FI.readline()
  81. print repr(lineR)+'   len=='+str(len(lineR))+
  82.       '  FI.tell() after FI.readline() : ',FI.tell(),'n'
  83.  
  84. cnt = 0
  85. for line in FI:
  86.     cnt += 1
  87.     print 'cnt=='+str(cnt)+'   '+repr(line)+'   len=='+str(len(line))+
  88.           "  FI.tell() after 'line in FI' : ",FI.tell()
  89.     if cnt==4:
  90.         pos = FI.tell()
  91.         break
  92. print "nFI.tell() after iteration 'for line in FI' : ",FI.tell(),'n'
  93.  
  94. FI.seek(pos)
  95.  
  96. lineR = FI.readline()
  97. print repr(lineR)+'   len=='+str(len(lineR))+
  98.       '  FI.tell() after FI.readline() : ',FI.tell()
  99. lineR = FI.readline()
  100. print repr(lineR)+'   len=='+str(len(lineR))+
  101.       '  FI.tell() after FI.readline() : ',FI.tell(),'n'
  102.  
  103. for line in FI:
  104.     print 'cnt=='+str(cnt)+'   '+repr(line)+'   len=='+str(len(line))+
  105.           "  FI.tell() after 'line in FI' : ",FI.tell()
  106. print "nFI.tell() after iteration 'for line in FI' : ",FI.tell(),'n'
  107.        
  108. '1AArn'   len==5  FI.tell() after FI.readline() :  5
  109.  
  110. cnt==1   '2BBrn'   len==5  FI.tell() after 'line in FI' :  75
  111. cnt==2   '3CCrn'   len==5  FI.tell() after 'line in FI' :  75
  112. cnt==3   '4DDrn'   len==5  FI.tell() after 'line in FI' :  75
  113. cnt==4   '5EErn'   len==5  FI.tell() after 'line in FI' :  75
  114.  
  115. FI.tell() after iteration 'for line in FI' :  75
  116.  
  117. ''   len==0  FI.tell() after FI.readline() :  75
  118. ''   len==0  FI.tell() after FI.readline() :  75
  119.  
  120.  
  121. FI.tell() after iteration 'for line in FI' :  75
  122.        
  123. FI  = open("rara.txt",'rb')
  124. lineR = FI.readline()
  125. print repr(lineR)+'   len=='+str(len(lineR))+
  126.       '  FI.tell() after FI.readline() : ',FI.tell(),'n'
  127.  
  128. cnt = 0
  129. pos = FI.tell()
  130. for line in FI:
  131.     cnt += 1
  132.     pos += len(line)
  133.     print 'cnt=='+str(cnt)+'   '+repr(line)+'   len=='+str(len(line))+
  134.           "  FI.tell() after 'line in FI' : ",FI.tell()
  135.     if cnt==4:
  136.         break
  137. print "nFI.tell() after iteration 'for line in FI' : ",FI.tell()
  138. print "    pos   after iteration 'for line in FI' : ",pos,'n'
  139.  
  140. FI.seek(pos)
  141.  
  142. lineR = FI.readline()
  143. print repr(lineR)+'   len=='+str(len(lineR))+
  144.       '  FI.tell() after FI.readline() : ',FI.tell()
  145. lineR = FI.readline()
  146. print repr(lineR)+'   len=='+str(len(lineR))+
  147.       '  FI.tell() after FI.readline() : ',FI.tell(),'n'
  148.  
  149. cnt = 0
  150. for line in FI:
  151.     cnt += 1
  152.     print 'cnt=='+str(cnt)+'   '+repr(line)+'   len=='+str(len(line))+
  153.           "  FI.tell() after 'line in FI' : ",FI.tell()
  154. print "nFI.tell() after iteration 'for line in FI' : ",FI.tell(),'n'
  155.        
  156. '1AArn'   len==5  FI.tell() after FI.readline() :  5
  157.  
  158. cnt==1   '2BBrn'   len==5  FI.tell() after 'line in FI' :  75
  159. cnt==2   '3CCrn'   len==5  FI.tell() after 'line in FI' :  75
  160. cnt==3   '4DDrn'   len==5  FI.tell() after 'line in FI' :  75
  161. cnt==4   '5EErn'   len==5  FI.tell() after 'line in FI' :  75
  162.  
  163. FI.tell() after iteration 'for line in FI' :  75
  164.     pos   after iteration 'for line in FI' :  25
  165.  
  166. '6FFrn'   len==5  FI.tell() after FI.readline() :  30
  167. '7GGrn'   len==5  FI.tell() after FI.readline() :  35
  168.  
  169. cnt==1   '8HHrn'   len==5  FI.tell() after 'line in FI' :  75
  170. cnt==2   '9IIrn'   len==5  FI.tell() after 'line in FI' :  75
  171. cnt==3   '10jrn'   len==5  FI.tell() after 'line in FI' :  75
  172. cnt==4   '11krn'   len==5  FI.tell() after 'line in FI' :  75
  173. cnt==5   '12lrn'   len==5  FI.tell() after 'line in FI' :  75
  174. cnt==6   '13mrn'   len==5  FI.tell() after 'line in FI' :  75
  175. cnt==7   '14nrn'   len==5  FI.tell() after 'line in FI' :  75
  176. cnt==8   '15orn'   len==5  FI.tell() after 'line in FI' :  75
  177.  
  178. FI.tell() after iteration 'for line in FI' :  75
  179.        
  180. with open("myfile.txt","r") as source:
  181.     rdr= iter(source)
  182.     heading= next(rdr)
  183.     for line in rdr:
  184.         process( line )