基础是我需要每行处理4gig文本文件.
使用.readline()或f中的行很适合内存,但需要很长时间才能使用IO.想使用像yield这样的东西,但是(我认为)会切断线条.
可能的答案:
file.readlines([sizehint])¶
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Read until EOF using readline() and return a list containing the lines因此阅读.如果存在可选的sizehint参数,则不会读取到EOF,而是读取总计近似sizehint字节的整行(可能在四舍五入到内部缓冲区大小之后).如果无法实现或无法有效实现,则实现类文件接口的对象可以选择忽略sizehint.
没意识到你能做到这一点!
您可以迭代文件对象:
with open("filename") as f:
for line in f:
whatever
Run Code Online (Sandbox Code Playgroud)
这将进行一些内部缓冲以提高性能.(注意,它file.readline()会执行得更糟,因为它不会缓冲 - 这就是为什么你不能在文件对象上混合迭代的原因file.readline().)
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |