从两个文件中添加数字(逐行)

2024-05-05 04:06:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个文件,都有大约10行随机数。我想将file1中的每一行与file2中的对应行一起添加。我可以做到这一点,每个文件中只有一个数字,但有多行数字挣扎。例如 这就是我所尝试的:

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

Tags: 文件txtread数字resultopenfile1file2
3条回答

您可以使用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])

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

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),我举了这个例子来说明您的情况下的不确定程度:

both have about 10 lines of random numbers

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

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

相关问题 更多 >