Chinaunix

标题: readlines() 参数问题 [打印本页]

作者: aingwen    时间: 2014-09-30 10:11
标题: readlines() 参数问题
本帖最后由 aingwen 于 2014-09-30 10:15 编辑
  1. def fy():   #显示3行
  2.     x = raw_input("请输入文件: ")
  3.     with open(x) as f:
  4.         t = f.readlines(3)
  5.         for line in t:
  6.             print line
  7.     return
  8. fy()
复制代码
这段代码我只想显示输入文本的3行,结果却显示出文本的所有行出来,这是为什么?  readlines(3) 不是表示读入3行吗?
作者: HH106    时间: 2014-09-30 10:48
  1. readlines(n)
  2. n不是读入的行数,而是一次读入到缓存的字节数.
复制代码

作者: aingwen    时间: 2014-09-30 11:02
回复 2# HH106
这里我发现把这个参数改成50 或者 500000它都会返回文本全部内容,参数就没起到作用


   
作者: liaozd    时间: 2014-10-03 16:19

file.readlines([sizehint])¶

    Read until EOF using readline() and return a list containing the lines thus read. If the optional sizehint argument is present, instead of reading up to EOF, whole lines totalling approximately sizehint bytes (possibly after rounding up to an internal buffer size) are read. Objects implementing a file-like interface may choose to ignore sizehint if it cannot be implemented, or cannot be implemented efficiently.


这是一个sizehint不是size,并且是rounding up,你需要知道系统的默认buffer size是多大:
import io
print io.DEFAULT_BUFFER_SIZE

很有可能你单个文件的大小没超超过buffer




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2