Добавление чисел из двух файлов (строка за строкой) - PullRequest
2 голосов
/ 31 марта 2020

У меня есть два файла, оба имеют около 10 строк случайных чисел. Я хочу добавить каждую строку в file1 с соответствующей строкой в ​​file2. Я могу сделать это только с одним числом в каждом файле, но имея несколько строк с числами, борющимися с этим. Например, вот что я попробовал:

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

Ответы [ 3 ]

2 голосов
/ 31 марта 2020

Первый шаг - правильно получить числа из файлов (если ваша программа не работает), а затем добавить их, возможно, в новый список. Чтобы сделать более надежную программу, мы поймем тривиальный случай (когда два списка не имеют одинаковое количество аргументов), в качестве бонуса вам не нужно жестко кодировать количество строк в каждом файле:

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")

Пример теста:

file1:

7
1
5
9
7
9
10
3
10
8

file2:

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 голосов
/ 01 апреля 2020

Просто обратите внимание, что если у вас очень длинные файлы, может быть плохой идеей прочитать их все в память сразу. В этом случае вы можете перебирать их одновременно, используя zip:

with open("file1.txt") as file1, open("file2.txt") as file2:
    for line1, line2 in zip(file1, file2):
        print(int(line1) + int(line2))
2 голосов
/ 31 марта 2020

Вы можете использовать readlines с open, чтобы получить строки в виде 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])
...