@fors_official

Почему subprocess выдает непонятные символы?

При данном коде:
code =subprocess.call(["ping", "www.youtube.com"])
Выводит следующие:
����� ����⠬� � wide-youtube.l.google.com [2a00:1450:4010:c06::c6] � 32 ���⠬� ������:
�⢥� �� 2a00:1450:4010:c06::c6: �६�=131��
�⢥� �� 2a00:1450:4010:c06::c6: �६�=88��
�⢥� �� 2a00:1450:4010:c06::c6: �६�=327��
�⢥� �� 2a00:1450:4010:c06::c6: �६�=86��

����⨪� Ping ��� 2a00:1450:4010:c06::c6:
����⮢: ��ࠢ���� = 4, ����祭� = 4, ����ﭮ = 0
(0% �����)
�ਡ����⥫쭮� �६� �ਥ��-��।�� � ��:
�������쭮� = 86�ᥪ, ���ᨬ��쭮� = 327 �ᥪ, �।��� = 158 �ᥪ

Process finished with exit code 0
  • Вопрос задан
  • 274 просмотра
Решения вопроса 3
Vindicar
@Vindicar
RTFM!
subprocess.run() совмещает стандартный вывод твоего скрипта и вызываемого тобой процесса. Если они используют разные кодировки, чей-то вывод превратится в кашу.
Используй capture_output, тогда ты получишь вывод скрипта в виде строки, которую сможешь сам декодировать, если надо.
Ответ написан
Комментировать
Lapita12
@Lapita12
Тесты, тесты?
output = subprocess.check_output(["ping", "www.youtube.com"])
print(output.decode())


Либо:

output = subprocess.run(["ping", "www.youtube.com"], capture_output=True, text=True)
print(output.stdout)


PING www.youtube.com (2a00:1450:4010:c06::c6) 56(84) bytes of data.
64 bytes from wide-youtube.l.google.com (2a00:1450:4010:c06::c6): icmp_seq=1 ttl=56 time=131 ms
64 bytes from wide-youtube.l.google.com (2a00:1450:4010:c06::c6): icmp_seq=2 ttl=56 time=88 ms
64 bytes from wide-youtube.l.google.com (2a00:1450:4010:c06::c6): icmp_seq=3 ttl=56 time=327 ms
64 bytes from wide-youtube.l.google.com (2a00:1450:4010:c06::c6): icmp_seq=4 ttl=56 time=86 ms

--- www.youtube.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 86/192/327/115 ms
Ответ написан
@fors_official Автор вопроса
Сам решил, вот решение:
con_out = subprocess.check_output(["ping", "www.youtube.com"], shell=True).decode('cp866')
print(con_out)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы