Я пытаюсь назначить вывод команды переменной без команды, думающей, что она передается по трубопроводу. Причиной этого является то, что данная команда дает неформатированный текст в качестве вывода, если он передается по каналам, но он придает цветному форматированному тексту, если он запускается с терминала. Мне нужно получить этот отформатированный текст.
До сих пор я пробовал несколько вещей. Я пробовал Popen так:
output = subprocess.Popen(command, stdout=subprocess.PIPE)
output = output.communicate()[0]
output = output.decode()
print(output)
Это позволит мне распечатать вывод, но он дает мне неформатированный вывод, который я получаю при передаче команды. Это имеет смысл, поскольку я пишу его здесь в коде Python. Но мне любопытно, есть ли способ назначить вывод этой команды непосредственно переменной без команды, запускающей собственную версию.
Я также попробовал следующую версию, которая вместо этого использует check_output:
output = subprocess.check_output(command)
output = output.decode()
print(output)
И снова я получаю тот же неформатированный вывод, который команда возвращает, когда команда передана по протоколу.
Есть ли способ получить отформатированный вывод, вывод, который команда обычно выдает из терминала, когда он не передается по каналам?