python - 从多个文件读取行

标签 python readlines

我有两个文件:

答:

John
Kevin
Richard

B:

Manager
Salesperson
Doctor

我试图同时从两个文件中读取行并打印以下内容:

输出:

John is a Manager
Kevin is a Salesperson
Richard is a Doctor

我尝试使用 contextlib.izip 包,但它不起作用。

代码:

with open('name') as names:
        with open('job') as jobs:
                for names1 in names:
                        jobs1 = jobs.readlines()
                        print names1 + jobs1

但这会引发错误

`TypeError: cannot concatenate 'str' and 'list' objects`

我也尝试过使用 contextlib 包,但没有成功。

最佳答案

您可以使用 zip 来做到这一点函数和多个上下文管理器:

with open('name') as name_file, open('job') as job_file:

    for name_line, job_line in zip(name_file, job_file):

        print("{} is a {}".format(
            name_line.strip(), job_line)) # don't forget to strip the newline 
                                          # from the names

此代码适用于 Python 3。如果您使用的是 Python 2,请使用 itertools.izip() .

此处发布的其他利用 readlines() 的解决方案可以工作,但它们使用了不必要的内存量。当您一次只关心一对行时,无需读取两个完整文件,因此我强烈推荐使用我在此处描述的迭代器方法。

关于python - 从多个文件读取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28483768/

相关文章:

python - 运行 py.test 时导入错误

python - 程序在 IDLE 下工作,但在命令行下失败

python - Scapy 数据包嗅探器触发对每个嗅探数据包的操作

python - 如何在 Python 上使用 Xlib 模拟鼠标点击

java - 如何在此程序中仅使用两个字符串?

python - 即使满足条件,循环也会继续(使用 Python)

python - 如何从文本文件导入(整数)列表的列表并以数学方式处理它们?

python - 导入文本文件出错

python - 为什么 readlines() 读取的内容比 sizehint 多得多?

python - 计算词频并据此制作字典