<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3462" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=975381715-25122008><FONT face=Arial>Hi,</FONT></SPAN></DIV>
<DIV><SPAN class=975381715-25122008><FONT face=Arial>Problem solved
when <FONT face=Courier>strip()</FONT> is being replaced by <FONT
face=Courier>strip('\n'</FONT>).</FONT></SPAN></DIV>
<DIV><SPAN class=975381715-25122008><FONT face=Arial>Happy
holidays,</FONT></SPAN></DIV>
<DIV><SPAN class=975381715-25122008><FONT
face=Arial>Ron.</FONT></SPAN></DIV><BR>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> Barak, Ron <BR><B>Sent:</B> Thursday,
December 25, 2008 15:05<BR><B>To:</B>
'python-list@python.org'<BR><B>Subject:</B> seek() returns unexpected
results<BR></FONT><BR></DIV>
<DIV></DIV><!-- Converted from text/plain format -->
<P> <FONT face=Arial>Hi,</FONT></P>
<P><FONT face=Arial>When using seek() with a certain text file, I get strange
results.<BR>I looked at the text file with a binary editor and verified with
'file', and it's an ASCII English text file.</FONT></P>
<P><FONT face=Arial>Running the script on other text files gives the expected
output.</FONT></P>
<P><FONT face=Arial><EM>Could you suggest the reason ?</EM></FONT></P>
<P><FONT face=Arial>In the outputs below, when using </FONT><FONT
face="Courier New" size=1>generator.py <FONT face=Arial size=3>as input for
</FONT>generator.py <FONT face=Arial size=3>the 'diff' is a nice
progression as expected. ('diff' is the difference between the file pointer
location and the number of characters read up to
now).<BR><BR></FONT></FONT><FONT face="Courier New" size=1><FONT face=Arial
size=3>However, when using <FONT face="Courier New" size=1>sac.log <FONT
face=Arial size=3>as input for </FONT>generator.py <FONT face=Arial
size=3>the 'diff' is a strange series: 1, 2, 1, 2, 3, 4, 5,
6<BR><BR></FONT></FONT></FONT></FONT><FONT face="Courier New" size=1><FONT
face=Arial size=3>Running <FONT face="Courier New"
size=1>generator.py <FONT face=Arial size=3>on a bigger portion of <FONT
face="Courier New" size=1>sac.log </FONT>produces these
'diff's:</FONT></FONT><BR> 1, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10</FONT></FONT><FONT face="Courier New"
size=1><FONT face=Arial size=3></P></FONT></FONT>
<P><FONT face=Arial>Thanks,<BR>Ron.</FONT></P><FONT face="Courier New"
size=1><FONT face=Arial size=3>
<P>
<HR>
<P></P></FONT></FONT>
<P><FONT face="Courier New" size=1>$ <STRONG>cat -n generator.py
<BR></STRONG> 1 #!/usr/bin/env
python<BR> 2<BR> 3
import gzip<BR> 4 import
sys<BR> 5 from Debug import _line as
line<BR> 6<BR> 7 class
LogStream():<BR> 8
<BR> 9 def
__init__(self, filename):<BR>
10 self.filename =
filename<BR>
11 self.input_file =
self.open_file(filename)<BR> 12<BR>
13 def open_file(self,
in_file):<BR>
14
try:<BR>
15
f = gzip.GzipFile(in_file, "r")<BR>
16
f.readline()<BR>
17 except
IOError:<BR>
18
f = open(in_file, "r")<BR>
19
f.readline()<BR>
20
f.seek(0)<BR>
21
return(f)<BR> 22<BR>
23 def
line_generator(self):<BR>
24 while
True:<BR>
25
line_ = self.input_file.readline()<BR>
26
print line()+". line_==|"+line_.strip()+"|"<BR>
27
self.total_chars += len(line_)<BR>
28
print line()+". line length:",len(line_),"; file
pointer:",self.input_file.tell(),<BR>
29
print "; total chars:",self.total_chars,"; diff:",self.input_file.tell() -
self.total_chars<BR>
30
if not line_:<BR>
31
break<BR>
32
yield line_.strip()<BR> 33<BR>
34<BR> 35 if __name__ ==
"__main__":<BR> 36<BR>
37 filename = sys.argv[1]<BR>
38 log_stream =
LogStream(filename)<BR> 39
log_stream.input_file.seek(0)<BR>
40 log_stream.total_chars =
0<BR> 41 line_generator =
log_stream.line_generator()<BR>
42 for i in range(8):<BR>
43 line_ =
line_generator.next() <BR></FONT></P>
<P><FONT face="Courier New" size=1>$ <STRONG>python generator.py
generator.py <BR></STRONG>26. line_==|#!/usr/bin/env
python|<BR>28. line length: 22 ; file pointer: 23 ; total chars: 22 ; diff:
1<BR>26. line_==||<BR>28. line length: 1 ; file pointer: 25 ; total chars: 23
; diff: 2<BR>26. line_==|import gzip|<BR>28. line length: 12 ; file pointer:
38 ; total chars: 35 ; diff: 3<BR>26. line_==|import sys|<BR>28. line length:
11 ; file pointer: 50 ; total chars: 46 ; diff: 4<BR>26. line_==|from Debug
import _line as line|<BR>28. line length: 32 ; file pointer: 83 ; total chars:
78 ; diff: 5<BR>26. line_==||<BR>28. line length: 1 ; file pointer: 85 ; total
chars: 79 ; diff: 6<BR>26. line_==|class LogStream():|<BR>28. line length: 19
; file pointer: 105 ; total chars: 98 ; diff: 7<BR>26. line_==||<BR>28. line
length: 5 ; file pointer: 111 ; total chars: 103 ; diff: 8</FONT></P>
<P><FONT face="Courier New" size=1>$ <STRONG>python generator.py
sac.log</STRONG>
<BR>26. line_==|Dec 15 15:45:20 iSW-00-090 svm_sac[1714]: AGENT[0]:
[tv_expand
] tv_expand:........[Domain 5:DVol1_3CG1-MM-1229347528T0]
maxVolCapacityMB:....[5121] tempVolCapacityMB:...[512]
fivePercentMB:.......[256] expandedTempVolCap:..[1024]|<BR>28. line length:
246 ; file pointer: 247 ; total chars: 246 ; diff: 1<BR>26. line_==|Dec 15
15:45:20 iSW-00-090 svm_sac[1714]: AGENT[0]: [daemon_send_expand_reque]
[Domain 5:DVol1_3CG1-MM-1229347528T0]: Add expand request up to 1024 MB
(2097152 sectors)|<BR>28. line length: 170 ; file pointer: 418 ; total chars:
416 ; diff: 2<BR>26. line_==|Dec 15 15:45:20 iSW-00-090 svm_sac[1746]:
AGENT[0]: [domain_expand_exec ] [Domain
5:DVol1_3CG1-MM-1229347528T0]: Send expand up to 1024 MB (2097152 sectors):
success|<BR>28. line length: 172 ; file pointer: 589 ; total chars: 588 ;
diff: 1<BR>26. line_==|Dec 15 15:45:21 iSW-00-090 svm_sac[1744]:
AGENT[0]:
[domain_poll
] Domain [Domain 5]: SVM reported volume manager setup changed|<BR>28. line
length: 141 ; file pointer: 731 ; total chars: 729 ; diff: 2<BR>26.
line_==|Dec 15 15:45:21 iSW-00-090 svm_sac[1744]: AGENT[0]:
[domain_poll
] Domain [Domain 5]: SVM reported multiview setup changed|<BR>28. line length:
136 ; file pointer: 868 ; total chars: 865 ; diff: 3<BR>26. line_==|Dec 15
15:45:21 iSW-00-090 svm_sac[1744]: AGENT[0]: [domain_is_setup_changed ]
Domain [Domain 5]: Setup CHANGED|<BR>28. line length: 113 ; file pointer: 982
; total chars: 978 ; diff: 4<BR>26. line_==|Dec 15 15:45:21 iSW-00-090
svm_sac[1744]: AGENT[0]:
[domain_get_pages ] Domain [Domain
5]: Asked to get setup pages|<BR>28. line length: 124 ; file pointer: 1107 ;
total chars: 1102 ; diff: 5<BR>26. line_==|Dec 15 15:45:21 iSW-00-090
svm_sac[1744]: AGENT[0]:
[svm_get_pages ]
SVM [Domain 5:12345]: got all setup pages|<BR>28. line length: 122 ; file
pointer: 1230 ; total chars: 1224 ; diff: 6<BR></FONT></P>
<P><FONT face="Courier New" size=1>$ <STRONG>cat generator.py
<BR></STRONG>#!/usr/bin/env python</P>
<P><FONT face="Courier New" size=1>import gzip<BR>import sys<BR>from Debug
import _line as line</FONT></P>
<P><FONT face="Courier New" size=1>class LogStream():<BR>
<BR> def __init__(self,
filename):<BR> self.filename =
filename<BR> self.input_file =
self.open_file(filename)</FONT></P>
<P><FONT face="Courier New" size=1> def open_file(self,
in_file):<BR>
try:<BR> f =
gzip.GzipFile(in_file,
"r")<BR>
f.readline()<BR> except
IOError:<BR>
f = open(in_file,
"r")<BR>
f.readline()<BR>
f.seek(0)<BR> return(f)</FONT></P>
<P><FONT face="Courier New" size=1> def
line_generator(self):<BR> while
True:<BR>
line_ =
self.input_file.readline()<BR>
print line()+".
line_==|"+line_.strip()+"|"<BR>
self.total_chars +=
len(line_)<BR>
print line()+". line length:",len(line_),"; file
pointer:",self.input_file.tell(),<BR>
print "; total chars:",self.total_chars,"; diff:",self.input_file.tell() -
self.total_chars<BR>
if not
line_:<BR>
break<BR>
yield line_.strip()</FONT></P>
<P><BR><FONT face="Courier New" size=1>if __name__ == "__main__":</FONT></P>
<P><FONT face="Courier New" size=1> filename =
sys.argv[1]<BR> log_stream =
LogStream(filename)<BR>
log_stream.input_file.seek(0)<BR> log_stream.total_chars =
0<BR> line_generator =
log_stream.line_generator()<BR> for i in
range(8):<BR> line_ =
line_generator.next() <BR></FONT></P></BLOCKQUOTE></FONT></BODY></HTML>