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.

Python pexpect tipo de código cadena en la aplicación de terminal.

Estoy intentando usar una aplicación de terminal desde Python. Después de ejecutar la aplicación, esta me pide que introduzca algunas palabras.

Este es mi código actual:

import pexpect
import sys

child = pexpect.spawn("./helium-wallet create basic --seed mobile")
child.logfile_read = sys.stdout.buffer
child.expect("Space separated seed words: ")
child.sendline("carpet again stick economy finish recipe blouse forward program stumble need ginger")

print(child.before)

No se preocupe por mi semilla, es solo un ejemplo.

Después de enviar las palabras, la aplicación devuelve el siguiente error:

(base) admin@192-168-0-181 helium-wallet-v1.6.10-x86-64-macos % python prova.py
Space separated seed words: b''

Parece que Python envía bytes en lugar de una cadena…
¿Cómo puedo enviar una cadena?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para enviar una cadena en lugar de bytes, simplemente puedes utilizar el método sendline() con un argumento de tipo string en lugar de un argumento de tipo byte.

    Aquí tienes una versión actualizada del código que utiliza una cadena para enviar las palabras clave:

    import pexpect
    import sys
    
    child = pexpect.spawn("./helium-wallet create basic --seed mobile")
    child.logfile_read = sys.stdout.buffer
    child.expect("Espacio separado palabras clave de semilla: ")
    child.sendline("carpet again stick economy finish recipe blouse forward program stumble need ginger")
    
    print(child.before)
    

    Con este cambio, la aplicación debería recibir las palabras clave de la semilla como una cadena y no lanzar un error.

Comments are closed.