Это действительно странно.
Но в любом случае, поскольку вы хотите написать текстовый файл, вы должны указать кодировку символов:
text_to_write = "hello\n"
with open(path, mode="a", encoding="utf-8") as text_file:
text_file.write(text_to_write)
Но вы также можете использовать регистратор.В вашей основной функции вы можете инициализировать конфигурацию регистрации.Например, вы можете использовать базовую конфигурацию:
import logging
logging.basicConfig(level=logging.INFO,
filename=path)
Конечно, эту конфигурацию можно прочитать из файла INI
.
Затем в каждом модуле вы можете определить регистратор и использоватьэто так:
LOG = logging.getLogger(__name__)
LOG.info("hello")
Результат примерно такой:
INFO:module_name:hello
Редактировать
Разъяснение о новых строках
Для текстового потока Python использует концепцию универсальной новой строки :
универсальной новой строки Способ интерпретации текстовых потоков, в которомвсе следующее распознается как завершающая строка: соглашение о конце строки Unix '\ n', соглашение Windows \ r \ n 'и старое соглашение Macintosh' \ r '.
Если вы хотите записать текстовые файлы, специфичные для Windows, в системе Linux, вам нужно установить перевод строки на '\ r \ n', это можно сделать так:
with open(path, mode="a", encoding="utf-8", newline="\r\n") as text_file:
text_file.write(text_to_write)
Но обычно это плохая практика ... вы поймете, почему ниже ...
Блокнот
Блокнот Microsoft не очень умен: он не может правильно обрабатывать текстовые файлы Unix, потому что он не 't распознает '\ n' как новую строку, поэтому каждая строка объединяется и выглядит как одна строка текста.
Я рекомендую вам установить знаменитый Notepad ++ , который является интеллектуальным инструментоми может автоматически определять стиль новой строки при открытии файла.Вы также можете использовать его, чтобы изменить его.
Поэтому я советую использовать universal newline и установить хороший инструмент, такой как Notepad ++ или Sublime Text и т. Д.