IP-фильтрация лучше, чем ничего, но у нее есть две проблемы:
Если это действительно конфиденциальные данные, это не обязательно нужна специальная машина (хотя это лучшая практика), но вы должны как минимум аутентифицировать своих пользователей и не запускать менее чувствительные (и более легко атакованные) приложения на одном компьютере.
И если это действительно чувствительно, попросите специалиста по безопасности рассмотреть, что вы делаете.
изменить: кстати, если вы можете, выровняйте регулярное выражение и используйте что-то вроде tcpwrappers или брандмауэров в ОС, если оно имеет какой-либо. Или, если у вас может быть другой IP-адрес для вашего приложения, используйте брандмауэр для блокировки внешнего доступа. (И если у вас нет брандмауэра, вы можете также отказаться и отправить свои данные злоумышленникам: -)
Проблема возникает потому, что вы используете f-строку (f"> \n{l}"
) для форматирования текста и передаете переменную l
в эту f-строку. Хотя ваша переменная l
была установлена в последний раз на последней итерации предыдущего цикла, вы печатаете последний элемент Y
в вашем файле.
Правильный синтаксис был бы:
with open("abc.txt", "w") as text_file:
print(f'> \n{Y}', file=text_file)
Или, может быть, это ваше отступление, и вы намеревались сделать это:
for l in Y:
print(l, end = '')
with open("abc.txt", "w") as text_file:
print(f'> \n{l}', file=text_file)
Кроме того, я бы порекомендовал вместо этого сделайте что-то вроде этого:
with open("abc.txt", "w") as f:
for l in Y:
f.write(f'> {l}\n')
Или даже лучше, если возможно:
with open("abc.txt", "w") as f:
f.writelines(Y)