es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Resultado de velocidad de Wget.

Tengo un problema, necesito la salida del comando en Python y exactamente obtener la velocidad de descarga del comando wget. Mi código es:

#!/usr/bin/python3


import os
import re
import subprocess

command = "wget ftp://ftp:password@172.17.1.129:1111/test.bin -p -nv"
process = subprocess.check_output(command, stderr=subprocess.STDOUT, shell=True)
ftp_result = re.findall(('\\d+.\\d+'),process.decode())

print(ftp_result)

TypeError: no se puede utilizar un patrón de cadena en un objeto similar a bytes

¿Qué estoy haciendo mal?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece ser que el error se produce al pasar un objeto de tipo bytes a la función re.findall(), la cual espera un patrón de cadena de texto. Para solucionar el error, la salida de process obtenida mediante la función subprocess.check_output() debe ser decodificada en una cadena de texto antes de ser pasada a re.findall() utilizando el método .decode().

    El código actualizado debería quedar así:

    #!/usr/bin/python3
    
    import os
    import re
    import subprocess
    
    command = "wget ftp://ftp:password@172.17.1.129:1111/test.bin -p -nv "
    process = subprocess.check_output(command, stderr=subprocess.STDOUT, shell=True)
    ftp_result = re.findall(('\\d+\\.\\d+'), process.decode())
    
    print (ftp_result)
    

    Al agregar .decode(), la salida de process se convierte de un objeto de tipo bytes a una cadena de texto, permitiendo que la búsqueda del patrón se realice con éxito.

Comments are closed.