Как записать текстовый файл в файл yaml с точной идентификацией и форматированием в python

#python #python-3.x #pyyaml #txt

#python #python-3.x #pyyaml #txt

Вопрос:

У меня есть текстовый файл с отступом, и я хочу, чтобы этот текстовый файл был преобразован в YAML с точной идеей.

Ниже приведен мой текстовый файл по имени Source.txt

 source:
    dialect:sql
    host:RATDegeggPRD
    user:454the6yht
    pass:4fghrthrthrt6h
    auth:ldap
    database: "rvvrrf"
    queries: ["wrfrfrgvrv.sql"]
    autoInfer: true
    rows: -1

target:
    database: "ddfcvdss"
    schema: "dev"
    queryTables: ["vrvrfre"]

mode: "write"
logfile: "rttcfdwee.log"
 

Теперь я хочу этот файл, но в формате YAML с точной идентификацией.

ниже то, что я пытался сделать

 from pathlib import Path
import yaml

src_yaml = open("Source.txt", "r")
yaml_source = src_yaml.read()
in_file = Path('Source.txt')
out_file = in_file.with_suffix('.yaml')
yaml.dump(yaml_source, out_file)
 

Теперь этот код генерирует файл YAML со всеми » n» между ними.
Добавление моего примера вывода ниже

 "source:ntdialect:teradatanthost:RATDegeggPRDntuser:454the6yhtntpass:4fghrthrthrt6hn
tauth:ldapn  database: "SCMAIN_V"n  queries: ["vrervvrec.sql"
]n  autoInfer: truen  rows: -1nntarget:n  database: "vrerevr"n  schema: "
dev"n  queryTables: ["vrrrev"]nnmode: "write"nlogfile:
 "fsefsfds.log"n"

 

Мне не нужны все эти n или подобные вещи. Я хочу точный отступ

Ответ №1:

 with open("source.txt", "r") as source, open("dest.yml", "wb") as dest:
    dest.write(source.read())
 

Это сработало для меня.

Комментарии:

1. @aminuowale «ошибка типа: требуется объект, подобный байтам, а не «str»» Для меня он показывает эту ошибку.

2. спасибо, чувак, это сработало. Просто нужно было удалить b из «wb»

3. Если вы можете проголосовать, пожалуйста, сделайте это. Поскольку теперь он отрицательный