Escriba resultados de archivo .py importado en archivo de texto

Tengo un archivo .py (array.py) que crea un array y lo imprime, y quiero importarlo en otro archivo .py (write.py) y escribir el array a un archivo de texto (file.txt):

array.py es aproximadamente así:

def array(size, var):
    return array

def prettyPrint(array):
    for row in array:
        for col in row:
            print("{}".format(col), end=" ")
        print("")
main()

En escritura. Tengo:

with open('file.txt', 'w') as f:
     f.write("Some other info")

     import array as a
     a.main()

¿Cómo escribo el array en file.txt? Traté de varias cosas, pero f.write() sólo toma cuerdas, y necesito mantener mi array juntos, limpio y ordenado. Siento que hay una manera de usar bastantePrint() pero no estoy seguro de cómo (estoy bastante nuevo en Python). ¿Qué métodos me estoy perdiendo aquí?

Pregunta hecha hace 3 años, 4 meses, 28 días - Por quantumquill62b1


4 Respuestas:

  • Hay una función en numpy - np.savetxt para estos fines:https://numpy.org/doc/stable/reference/generated/numpy.savetxt.html.

    Respondida el Dec 18, 2020 a las 10:32 - por codealchemy

    Votos positivos: 0 | Votos negativos: 0

  • Puede convertir el array a una cadena o formatearlo como desee.

    
        # Convert the array to a string: [1, 2, 3]
        f.write(str(array))
        
        # Seperate each element: 1;2;3 (the seperator is ";" in this case)
        f.write(seperator.join(array))
    
    

    Si su matriz es multidimensional puede repetir este proceso para cada matriz. (En este caso usted necesita cambiar el archivo-mode para "a" para anexar cada array y no anular todo)

    
        # Loop through each array and seperate them: 1, 2, 3; a, b, c; x, y, z
        for array in arrays:
            f.write(seperator.join(array))
        
        # Example:
        seperator = ";"
        arrays = [
                  [1, 2, 3],
                  ["a", "b", "c"],
                  ["x", "y", "z"]]
        
        for array in arrays:
            f.write(seperator.join(array) + "\n") # The \n appends a new line after each array
        
        # Output:    
        1; 2; 3
        a; b; c
        x; y; z
    
    

    Respondida el Dec 18, 2020 a las 10:41 - por techinnovator

    Votos positivos: 0 | Votos negativos: 0

  • Para escribir el contenido del array en el archivo de texto file.txt, puedes modificar un poco la función prettyPrint para que en lugar de imprimir en la consola, retorne una cadena formateada con el contenido del array. Luego, en el archivo write.py, puedes llamar a esa función y escribir el resultado en el archivo de texto.

    Primero, modifica la función prettyPrint en el archivo array.py para que en lugar de imprimir directamente, construya una cadena con el contenido del array y la retorne:

    python
    def prettyPrint(array):
        result = ""
        for row in array:
            for col in row:
                result += "{} ".format(col)
            result += "\n"
        return result
    

    Luego, en tu archivo write.py, puedes llamar a la función prettyPrint y escribir el resultado en el archivo de texto:

    python
    with open('file.txt', 'w') as f:
        f.write("Some other info\n")
    
        import array as a
        size = 3  

    Define el tamaño del array

    var = 1

    Define el valor de los elementos del array

    my_array = a.array(size, var) array_str = a.prettyPrint(my_array)

    Obtener la cadena formateada del array

    f.write(array_str)

    Con estos cambios, al ejecutar write.py, se creará un archivo file.txt con la información del array formateada de manera adecuada.

    Este método te permitirá mantener la estructura ordenada del array en el archivo de texto. ¡Espero que esta solución te sea de ayuda!

    Respondida el Dec 19, 2020 a las 10:28 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para escribir los valores del array en un archivo de de archivo de forma formateada, sigue est pasos:

    • En el archivo `array.py`:
      <ul><li>Crea una función para devolver el array formateado como una cadena:</li></ul>
    <pre><code>python
    def get_formatted_array():
        array_string = ""
        for row in array:
            for col in row:
                array_string += f"{col} "
            array_string += "\n"
        return array_string
    </code></pre>
    
    • En el archivo `write.py`:
      <ul><li>Imprime el array formateado al archivo de archivo de usando la función `get_formatted_array` de `array.py`:</li></ul>
    <pre><code>python
    with open('file.txt', 'w') as f:
        f.write("Otra información\n")
        f.write("---------------------\n")
        f.write(a.get_formatted_array())
    </code></pre>
    

    Esto escribirá el array en file.txt en formato de filas y columnas separadas por espacios.

    Respondida el Dec 19, 2020 a las 10:42 - por Gemini

    Votos positivos: 0 | Votos negativos: 0