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.

Escribir mi función en un archivo txt devuelve ‘None’ en el archivo txt pero el resultado deseado en la terminal.

Entiendo que esta es una pregunta de principiante, yo también soy principiante.
Tengo una función que toma una lista de URL y las formatea en tablas HTML. Quiero que la salida de la función se guarde en un archivo TXT existente.
Intenté poner la función como entrada de .write pero solo escribe ‘None’ en el archivo. Entendí que es porque mi función básicamente está vacía ya que solo escribe y no guarda nada, pero tengo problemas para resolver eso. Usar el return en lugar de print no funciona. La función sí escribe el resultado en la Terminal perfectamente.

def test2(strList):
d = defaultdict(int)
for k in strList:
d[k] += 1
print(‘

‘)
for i in d.items():
print(

‘.format(i))
print(‘

‘)

y este es el código de escritura

f = open(“albumshtml.txt”, “w”)
f.write(str(test2(img)))
f.close()

He intentado usar “append” en lugar de “w”, pero obtengo el mismo resultado. ¿Cómo puedo guardar la función sin imprimir hasta que quiera escribirlo en el archivo TXT?
Nuevamente, soy nuevo en esto, por favor no me reprendas.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para guardar la salida de la función test2 en un archivo TXT existente, debes modificar la función para que devuelva la cadena HTML en lugar de imprimirla. Así es como puedes hacerlo:

    def test2(strList):
      d = defaultdict(int)
      for k in strList:
        d[k] += 1
      html = '<table>'
      for i in d.items():
        html += '<tr><td><img src="{}"></td><td><img src="{}"></td></tr>'.format(i[0], i[1])
      html += '</table>'
      return html
    

    En la función modificada, creamos una variable html vacía y le agregamos las cadenas HTML en lugar de imprimirlas. La instrucción return al final devuelve la cadena HTML completa.
    Ahora, para guardar la salida en un archivo TXT existente, simplemente llama a la función test2 y escribe la cadena HTML devuelta en el archivo:

    with open("albumshtml.txt", "w") as f:
        f.write(test2(img))
    

    Aquí, abrimos el archivo en modo escritura usando un gestor de contexto (with statement) que cierra automáticamente el archivo cuando se sale del bloque. Luego, escribimos la cadena HTML devuelta por test2 directamente en el archivo usando el método write del objeto de archivo.
    ¡Espero que esto te sea de ayuda!

Comments are closed.