Я пытаюсь выполнить команду с помощью subprocess.Popen () и извлечь результат с помощью следующего кода.
proc = subprocess.Popen([command], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
gadgets = out.split('\n')
Результат представляет собой строку и может быть разбит на несколько строк путем разделения на основе символов новой строки в результате.Для простоты предположим, что переменная gadgets в фрагменте кода представляет собой список из двух строк.Когда я печатаю отдельный элемент из списка на консоли с помощью функции python print (), я получаю обычный текст ascii следующим образом.
for item in gadgets:
print(item)
output:
syscall;
xlatb; ret;
Однако, когда я печатаю список, я получаю символы другого типа.Вывод выглядит следующим образом:
print(gadgets)
вывод:
['\x1b[1;33msyscall\x1b[0m\x1b[1;34m; \x1b[0m', '\x1b[1;33mxlatb\x1b[0m\x1b[1;34m; \x1b[0m\x1b[1;33mret\x1b[0m\x1b[1;34m; \x1b[0m']
Я считаю, что функция print () каким-то образом изменяет кодировку и печатает обычный текст ascii на консоли для отдельных элементов.,Может кто-нибудь сказать, пожалуйста, какая кодировка используется функцией print () в этом сценарии?Спасибо!