Viji
@Viji
Associate DevOps Engineer

Как можно записать multiline строку в файл, сохраняя символы новой строки?

Переношу bash script, кот содержится в multiline строке питон скрипта в файл.. но в этой multiline строке есть '\n' в некоторых местах.
например
multiline= '''
report_number=$(head -n 1 "/root/cron_job_enumerator.txt" | tr -d '\n')
'''

которые не переносятся в финальный файл, что создает проблемы - как этого можно избежать?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Есть два варианта:
1. Экранировать обратным слешем проблемные символы (кавычки и обратный слеш):
multiline = '''
report_number=$(head -n 1 "/root/cron_job_enumerator.txt" | tr -d \'\\n\')
'''
print(multiline)

2. использовать префикс строк r, который не дает обрабатывать содержимое строки, заставляет воспринимать ее как есть (тогда отдельные символы экранировать не надо):
multiline = r'''
report_number=$(head -n 1 "/root/cron_job_enumerator.txt" | tr -d '\n')
'''
print(multiline)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
просто представьте как парсинг происходит, если будет
report_number=asd
asd
asd

или
report_number="asd
asd
asd"

и вот тут кавычек добавьте
report_number="$(head -n 1 "/root/cron_job_enumerator.txt" | tr -d '\n')"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы