我在python中相对较新,正在研究C语言.由于我在python中看到了许多新功能,我不知道,我想知道是否有一个函数可以从python中的文件请求10000行.
如果存在这样的函数,这样的东西就是我所期望的:
lines = get_10000_lines(file_pointer)
Run Code Online (Sandbox Code Playgroud)
python是否有内置功能,或者我可以为此下载任何模块吗?如果没有,我该如何做到这一点是最简单的方法.我需要分析一个巨大的文件,所以我想读取10000行并分析每次以节省内存.
谢谢你的帮助!
Chi*_*ust 24
f.readlines()返回一个包含文件中所有数据行的列表.如果给定一个可选的参数sizehint,它会从文件读取多个字节,并且足以完成一行,并从中返回行.这通常用于允许按行有效读取大文件,但无需将整个文件加载到内存中.只返回完整的行.
来自文档.
这不是你要求的,因为这限制了读取的字节而不是读取的行,但我认为这是你想要做的.
Fre*_*Foo 21
from itertools import islice
with open(filename) as f:
first10000 = islice(f, 10000)
Run Code Online (Sandbox Code Playgroud)
这设置first10000
为一个可迭代的对象,即你可以用它循环
for x in first10000:
do_something_with(x)
Run Code Online (Sandbox Code Playgroud)
如果您需要列表,请list(islice(f, 10000))
改为执行.
当文件包含少于10k行时,这将返回文件中的所有行,没有填充(与range
基于-based的解决方案不同).当以块的形式读取文件时,结果中<10000行会发出EOF信号:
with open(filename) as f:
while True:
next10k = list(islice(f, 10000)) # need list to do len, 3 lines down
for ln in next10k:
process(ln)
if len(next10k) < 10000:
break
Run Code Online (Sandbox Code Playgroud)
你真的关心你一次有多少行?通常最有意义的是逐行迭代文件对象:
f = open('myfile.txt', 'r')
for line in f:
print line
Run Code Online (Sandbox Code Playgroud)
python文档表明这是处理文件的首选方式:
读取行的另一种方法是遍历文件对象.这是内存高效,快速,并导致更简单的代码.
有关示例,请参阅python文档.
归档时间: |
|
查看次数: |
3522 次 |
最近记录: |