Python 的函数 readlines(n) 行为

新手上路,请多包涵

我已经阅读 了文档,但是 readlines(n) 是做什么的?通过 readlines(n) ,我的意思是 readlines(3) 或任何其他数字。

当我运行 readlines(3) 时,它返回与 readlines() 相同的内容。

原文由 user2013613 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 533
2 个回答

可选参数应该表示从文件中读取了多少(大约)字节。该文件将被进一步读取,直到当前行结束:

 readlines([size]) -> list of strings, each a line from the file.

Call readline() repeatedly and return a list of the lines so read.
The optional size argument, if given, is an approximate bound on the
total number of bytes in the lines returned.

另一个引用:

如果给定一个可选参数 sizehint ,它会从文件中读取足够多的字节来完成一行,并从中返回这些行。

你是对的,它似乎对小文件没有太大作用,这很有趣:

 In [1]: open('hello').readlines()
Out[1]: ['Hello\n', 'there\n', '!\n']

In [2]: open('hello').readlines(2)
Out[2]: ['Hello\n', 'there\n', '!\n']

有人可能认为这是由文档中的以下短语解释的:

使用 readline() 读取直到 EOF 并返回包含如此读取的行的列表。如果存在可选的 sizehint 参数,而不是读取 EOF,而是读取总计大约 sizehint 字节的整行 (可能在四舍五入到内部缓冲区大小之后) 。如果无法实现或无法有效实现,实现类文件接口的对象可能会选择忽略 sizehint。

但是,即使我尝试在没有缓冲的情况下读取文件,它似乎也没有改变任何东西,这意味着其他类型的内部缓冲区意味着:

 In [4]: open('hello', 'r', 0).readlines(2)
Out[4]: ['Hello\n', 'there\n', '!\n']

在我的系统上,这个内部缓冲区大小似乎约为 5k 字节/1.7k 行:

 In [1]: len(open('hello', 'r', 0).readlines(5))
Out[1]: 1756

In [2]: len(open('hello', 'r', 0).readlines())
Out[2]: 28080

原文由 Lev Levitsky 发布,翻译遵循 CC BY-SA 3.0 许可协议

它列出了给定字符大小“n”从当前 开始跨越的行。

例如:在 text 文件中,内容为

one
two
three
four

open('text').readlines(0) 返回 ['one\n', 'two\n', 'three\n', 'four\n']

open('text').readlines(1) 返回 ['one\n']

open('text').readlines(3) 返回 ['one\n']

open('text').readlines(4) 返回 ['one\n', 'two\n']

open('text').readlines(7) 返回 ['one\n', 'two\n']

open('text').readlines(8) 返回 ['one\n', 'two\n', 'three\n']

open('text').readlines(100) 返回 ['one\n', 'two\n', 'three\n', 'four\n']

原文由 Sundeep471 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题