<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); ">+0.5 about f.readlines(maxlines=10); it might be a good addition since the sizehint parameter does not allow an actual prediction of how many lines will be returned. </span><div>
<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); ">On the other side the two arguments </span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); ">are mutually exclusive, </span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); ">therefore I'm not sure what expect in case both are specified (maybe ValueError, but such kind of APIs always leave me a little skeptical).</span></div>
<div><div><div><font class="Apple-style-span" face="arial, sans-serif">+0 about <span class="Apple-style-span" style="font-size: 13px; background-color: rgb(255, 255, 255); ">f.peeklines(10) as it only saves one line of code:</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="font-size: 13px; background-color: rgb(255, 255, 255); "><br></span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="font-size: 13px; background-color: rgb(255, 255, 255); ">f.peeklines(10)</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="font-size: 13px; background-color: rgb(255, 255, 255); ">f.seek(0)</span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="font-size: 13px; background-color: rgb(255, 255, 255); "><br>
</span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="font-size: 13px; background-color: rgb(255, 255, 255); ">...or 2 in case you're not at the beginning of the file.</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="font-size: 13px; background-color: rgb(255, 255, 255); "><br></span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="font-size: 13px; background-color: rgb(255, 255, 255); ">before = f.tell()</span></font></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); ">f.peeklines(10)</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); ">f.seek(before)</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255); "><br></span></div><div><font class="Apple-style-span" face="arial, sans-serif">Not a great advantage vs. the fact of introducing (and remembering) a new function, in my opinion.</font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, sans-serif">Regards,</font></div><div><font class="Apple-style-span" face="arial, sans-serif"><br>
</font></div><div><font class="Apple-style-span" face="arial, sans-serif">--- Giampaolo</font></div><div><font class="Apple-style-span" face="arial, sans-serif"><a href="http://code.google.com/p/pyftpdlib/">http://code.google.com/p/pyftpdlib/</a></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><a href="http://code.google.com/p/pyftpdlib/">http://code.google.com/p/psutil/</a><br></font><br><div class="gmail_quote">2011/9/30 John O'Connor <span dir="ltr"><<a href="mailto:jxo6948@rit.edu">jxo6948@rit.edu</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">It seems there could be a cleaner way of reading the first n lines of<br>
a file and additionally not seeking past those lines (ie peek). This<br>
is obviously a trivial task for 1 line ie...<br>
f.readline()<br>
f.seek(0)<br>
but one that I think would make sense to add to the IO implementation,<br>
given that we already have readline, readlines, and peek I think<br>
peekline() or peeklines(n) is only a natural addition. The argument<br>
for doing so (in 3.3 of course), is primarily readability but also<br>
that the maintenance burden *seems* like it would be low. This<br>
addition would also be helpful and more concise where n > 1.<br>
<br>
I think readlines() should also take an optional argument for a max<br>
number of lines to read. It seems more common/helpful to me than<br>
'hint' for max bytes. In n>1 case one could do...<br>
<br>
f.readlines(maxlines=10)<br>
<br>
or for the 'peek' case<br>
<br>
f.peeklines(10)<br>
<br>
<br>
I also didn't find any of the answers from<br>
<a href="http://stackoverflow.com/questions/1767513/read-first-n-lines-of-a-file-in-python" target="_blank">http://stackoverflow.com/questions/1767513/read-first-n-lines-of-a-file-in-python</a><br>
to be very compelling.<br>
<br>
I am more than willing to propose a patch if the idea(s) are supported.<br>
<br>
- John<br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/mailman/listinfo/python-ideas</a><br>
</blockquote></div><br></div></div></div>