HartX
@HartX
Студент, красавчик, плохой программист=)

Как записать текст в yaml файл в python?

Я пишу автоматический перевод для локализации игры. Проблема в том что игра берёт только файлы с расширением YAML. Я решал эту проблему тем что просто создавал текстовик, а потом перекодировал в .yml и это даже работало... Для Unix систем. Windows создаёт файлы .yml.tmp да и я явно сделал костыль при перекодировании. Помогите мне исправить мой костыль пожалуйста. Вот мой код
Функция для записи в файл
def execute_operation(self, path_general_file, path_additional_file):
        list_english_line = self.file_in_list(path_general_file)
        dict_english_line = self.file_in_dict(path_general_file)
        additional_file = self.write_in_file(path_additional_file)
        for line in list_english_line:
            if 'l_english' in line:
                additional_file.write('l_russian:\n')
            elif '#' in line:
                additional_file.write(line)
            elif '\n' in line:
                additional_file.write('\n')
            elif line == ' \n':
                additional_file.write(' \n')
            elif line == '  \n':
                additional_file.write('  \n')
            else:
                try:
                    #self.__check_connection()
                    ru_text = self.translator.transleate_text(text=dict_english_line[line].replace(':0 "', '').replace('"', ''))
                    ru_text = ':0 "' + ru_text + '"'
                    additional_file.write(line + ru_text + '\n')
                    if 'desc' in line:
                        additional_file.write('\n')
                except:
                    additional_file.write(line)
        additional_file.close()
        print('Файл' + ' ' + path_additional_file.split('/')[-1] + ' Переведён')
        self.encod_utf8_bom(path_additional_file)


Функция для перекодирования
def encod_utf8_bom(self, path_on_file: str):
        with codecs.open(path_on_file, encoding="utf-8") as f_in, codecs.open(path_on_file + ".tmp", encoding="utf-8-sig", mode="w") as f_out:
            f_out.write(f_in.read())
            shutil.move(path_on_file + ".tmp", path_on_file)
  • Вопрос задан
  • 169 просмотров
Решения вопроса 1
shabelski89
@shabelski89
engineer
Ваш костыль не нужен освсем, есть готовые библиотеки - yaml
Ваши данные должны быть списками и словарями питона, которые дампятся в yaml файл.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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