неправильная запись в файл, засписывается только последнее значение
Не могу понять, не варит на ночь глядя бошка вообще. Смысл в том, что использую f строки, с помощью них создаётся 6 файлов типа result2_hostname1 result2_hostname2 result2_hostname3 и т.д. В каждом из этих файлов есть строки. Хочу взять все эти файлы, и объединить в один.
С помощью моего варианта скрипта, в конечном виде в print(line) вижу всё как я хотел, а когда делаю f_out.write(line) записывается только результат последнего файла, т.е. строки из result2_hostname6.
Нужны все строки во всех файлах, в одном конечном.
Вариант моего скрипта:
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
file = open('C:/Users/sx01/Desktop/Python3/13/new/hosts.txt', 'r')
for line in file:
info = {}
info['ip'], info['hostname'], *_ = line.split()
try:
with open(f'C:/Users/sx01/Desktop/Python3/13/new/result2_{info["hostname"]}') as f_in, open(f'C:/Users/sx01/Desktop/Python3/13/new/result_good','w') as f_out:
for line in f_in:
print(line)
f_out.write(line)
except Exception as e:
error_log = str(e)
print('error_log')
file.close()
Ответы (1 шт):
Потому что результат print() остаётся на экране навсегда, а флаг w при открытии файла говорит о том, что каждый раз содержимое файла перезаписывется.
Так что запись в файл правильная. Нужно просто использовать правильный режим работы с файлом.
Ещё на тему