Как записать строку, содержащую несколько строк, в файл таким образом, чтобы символы переноса строки сохранялись?

  • 8 августа 2023 г. 19:41
Ответы на вопрос 3
В Python вы можете сделать это следующим образом:

```python
with open('filename.txt', 'w') as file:
    file.write("Строка 1\nСтрока 2\nСтрока 3\n")
```

В этом коде `\n` - это символ переноса строки. Указав `w` (write) в качестве второго аргумента для `open()`, вы говорите Python, что хотите записать в файл. Если файл с указанным именем уже существует, он будет перезаписан.

Добавьте + к `w` (`w+`) если хотите, чтобы файл был создан, если его еще не существует.
Есть два варианта:

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)

Пример парсинга:

Если будет запись report_number=asdasdasd или report_number="asdasdasd", то кавычки не обязательно добавлять:

report_number="$(head -n 1 \"/root/cron_job_enumerator.txt\" | tr -d '\n')"
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)

Просто представьте себе, как будет осуществлен разбор, если значение переменной report_number будет 'asdasdasd' или "asdasdasd". И вот здесь вам потребуется добавить кавычки:

report_number="$(head -n 1 "/root/cron_job_enumerator.txt" | tr -d '\n')"
Похожие вопросы