Почему я не могу создать комбинацию из всех элементов из файла "1", поставив им в соответствие каждый элемент из файла "2"?
У меня есть файл 1 Вот пример данных:
1
2
3
4
Так же есть файл 2. Вот пример данных:
10
11
12
13
14
Я хочу получить вот что (каждому элементу со списка 1 сопоставляю элемент со списка 2):
1 10
1 11
1 12
1 13
1 14
2 10
2 11
2 12
2 13
2 14
3 10
3 11
3 12
3 13
3 14
4 10
4 11
4 12
4 13
4 14
Делаю это так:
with open('long_1.txt', 'r') as long:
with open('short_1.txt', 'r') as short:
for i in long:
for k in short:
print(i,k)
Получаю результат:
1
10
1
11
1
12
1
13
1
14
Получается, что алгоритм берет только первую строчку с файла 1 и на этом останавливается. Почему это не работает с файлами и как исправить ошибку? Спасибо
Ответы (2 шт):
Можете попробовать так:
l = open('long_1.txt', 'r')
s = open('short_1.txt', 'r')
ll = l.read().splitlines()
ss = s.read().splitlines()
for x in ll:
for y in ss:
print(x, y)
l.close()
s.close()
Во вложенном цикле второй файл доходит до конца и на этом все прекращается, т.к. указатель стоит в конце файла, а чтение не начинается само по себе с начала. Нужно или открывать второй файл в теле цикла каждый раз
with open('long_1.txt', 'r') as long:
for i in long:
with open('short_1.txt', 'r') as short:
for k in short:
print(i,k)
Или переставлять курсор в начало файла на каждой итерации внешнего цикла:
with open('long_1.txt', 'r') as long:
with open('short_1.txt', 'r') as short:
for i in long:
short.seek(0)
for k in short:
print(i,k)
Но лучше считать хотя бы второй файл в список и работать со списком, чтобы не читать файл каждый раз.