加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 同时迭代两个文件的行

发布时间:2020-12-20 12:32:44 所属栏目:Python 来源:网络整理
导读:我试图在两个文件之间连接片段特定的行.这样我想从file2中的第2行添加一些东西到file1的第2行.然后从第6行从file2到文件1的第6行,依此类推.有没有办法同时迭代这两个文件来做到这一点? (知道输入文件大约为15GB可能会有所帮助). 这是一个简化的例子: 档案1
我试图在两个文件之间连接片段特定的行.这样我想从file2中的第2行添加一些东西到file1的第2行.然后从第6行从file2到文件1的第6行,依此类推.有没有办法同时迭代这两个文件来做到这一点? (知道输入文件大约为15GB可能会有所帮助).

这是一个简化的例子:

档案1:

Ignore
This is a
Ignore
Ignore
Ignore
This is also a
Ignore
Ignore

文件2:

Ignore
sentence
Ignore
Ignore
Ignore
sentence
Ignore
Ignore

输出文件:

Ignore
This is a sentence
Ignore
Ignore
Ignore
This is also a sentence
Ignore
Ignore

解决方法

Python3:

with open('bigfile_1') as bf1:
    with open('bigfile_2') as bf2:
        for line1,line2 in zip(bf1,bf2):
            process(line1,line2)

重要的是,bf1和bf2不会立即读取整个文件.它们是知道如何一次生成一行的迭代器.

zip()与迭代器一起工作正常,并且会生成一个interator本身,在这种情况下,你可以处理成对的行.

使用with确保文件将在之后关闭.

Python 2.x

import itertools

with open('bigfile_1') as bf1:
    with open('bigfile_2') as bf2:
        for line1,line2 in itertools.izip(bf1,line2)

Python 2.x不能以相同的方式使用zip – 它会产生一个列表而不是一个可迭代的,用这些15GB文件占用你的所有系统内存.我们需要使用特殊的可迭代版本的zip.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读