Запись текста из одного .txt в другой .txt Python 3
Всем привет!
Имеется три .txt файла с различным количеством строк текста в каждом.
Сравниваем количество строк в каждом файле и в новый файл, уже четвертый .txt, переносим текст, у которого меньше всего строк.
Проблема возникает при записи всего текста в новый файл.
Вот код:
with open ('1.txt', encoding='utf-8') as f:
line_count1 = 0
for line in f:
line_count1 += 1
print(line_count1)
with open('2.txt', encoding='utf-8') as f1:
line_count2 = 0
for line in f1:
line_count2 += 1
print(line_count2)
with open('3.txt', encoding='utf-8') as f2:
line_count3 = 0
for line in f2:
line_count3 += 1
print(line_count3)
with open('all123.txt', 'w', encoding='utf-8') as f3:
if (line_count2 < line_count1) and (line_count2 < line_count3):
f3.writelines(f1)
В чем может быть проблема в записи файла?
Единственное, что получается, это, когда я копирую текст из файла и вставляю его просто в write() все конечно уходит.
Я только учусь.
Ответы (2 шт):
Из f1 вам предварительно надо прочитать строки в список, поскольку из дескриптора вы можете прочитать данные только один раз:
with open(...) as f1:
f1_lines = [l for l in f1.readlines()]
line_count2 = len(f1_lines)
...
if (line_count2 < line_count1) and (line_count2 < line_count3):
f3.writelines(f1_lines)
Аналогично поступаем и с другими f-дескрипторами файлов :)
Ещё в конце каждой строки должен быть символ новой строки:
f3.writelines([f'{l}\n' for l in f1_lines])
после того как вы один раз прочитали файл for line in f: он стал пустым
вам надо заново открыть файл
with open('all123.txt', 'w', encoding='utf-8') as f3:
if (line_count2 < line_count1) and (line_count2 < line_count3):
with open("1.txt", encoding="utf-8") as f1:
f3.writelines(f1.readlines())