【问题标题】:Adding numbers from two files (line by line)从两个文件中添加数字(逐行)
【发布时间】:2020-03-31 05:39:30
【问题描述】:

我有两个文件,都有大约 10 行随机数。我想将 file1 中的每一行与 file2 中的相应行添加。我可以在每个文件中只使用一个数字来做到这一点,但有多行数字与之苦苦挣扎。例如 这是我尝试过的:

file1 = open("file1.txt").read()
file2 = open("file2.txt").read() 
result = int(file1) + int(file2)
print(result)

【问题讨论】:

  • 尝试逐行阅读两个文本文档。你正在做的是你正在阅读整个文件。您可以通过多种方式执行此操作,例如创建一个数组来读取 txt 文件 1 中的每个数字,并创建另一个数组来读取 txt 文件 2。然后您可以将所有值相加并打印出来。这只是一种方法,绝对不是最有效的。

标签: python python-3.x python-2.7


【解决方案1】:

第一步是从文件中正确获取数字(您的程序失败的地方),然后将它们添加到新列表中。为了使程序更健壮,我们将捕获一个微不足道的边缘情况(当两个列表没有相同数量的参数时),作为奖励,您不必硬编码每个文件中的行数:

from itertools import zip_longest

try:
    with open("file1") as file1, open("file2") as file2:
        numbers1 = [int(line) for line in file1.readlines()]
        numbers2 = [int(line) for line in file2.readlines()]
        result = [line[0] + line[1] for line in zip_longest(numbers1, numbers2, fillvalue=0)]
except FileNotFoundError:
    print("Error opening files")

样本测试:

文件1:

7
1
5
9
7
9
10
3
10
8

文件2:

9
9
8
2
8
5
2
8
9
>>> result
[16, 10, 13, 11, 15, 14, 12, 11, 19, 8]

您必须注意到文件的行数不同,file1(10),file2(9),我举了这个例子来说明您的情况的不确定程度:

都有大约 10 行随机数

【讨论】:

  • 我还被告知要确保在阅读文件后关闭文件,这是一个好习惯。感谢您的帮助
【解决方案2】:

您可以使用readlinesopen 来获取Python 列表中的行。然后,您可以将它们一一相加,并用总和创建一个新列表。

如您所说,假设两个列表的长度相同,则两者都有大约 10 行随机数

numbers1 = [int(a) for a in open('file1.txt').readlines()]
numbers2 = [int(a) for a in open('file2.txt').readlines()]

resul_ls = []
for i in range(len(numbers1)):
   result_ls.append(numbers1[i] + numbers2[i])

【讨论】:

  • 10 行随机数 = 10 个随机整数
【解决方案3】:

请注意,如果您有很长的文件,一次将它们全部读入内存可能是个坏主意。在这种情况下,您可以使用zip 同时迭代它们:

with open("file1.txt") as file1, open("file2.txt") as file2:
    for line1, line2 in zip(file1, file2):
        print(int(line1) + int(line2))

【讨论】:

    猜你喜欢
    • 2021-04-08
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 2022-09-28
    相关资源
    最近更新 更多