Imprimir cadena a archivo de texto


653

Estoy usando Python para abrir un documento de texto:

text_file = open("Output.txt", "w")

text_file.write("Purchase Amount: " 'TotalAmount')

text_file.close()

Quiero sustituir el valor de una variable de cadena TotalAmounten el documento de texto. ¿Alguien puede decirme cómo hacer esto?

Respuestas:


1214
text_file = open("Output.txt", "w")
text_file.write("Purchase Amount: %s" % TotalAmount)
text_file.close()

Si usa un administrador de contexto, el archivo se cierra automáticamente.

with open("Output.txt", "w") as text_file:
    text_file.write("Purchase Amount: %s" % TotalAmount)

Si está utilizando Python2.6 o superior, se prefiere usar str.format()

with open("Output.txt", "w") as text_file:
    text_file.write("Purchase Amount: {0}".format(TotalAmount))

Para python2.7 y superior puede usar en {}lugar de{0}

En Python3, hay un fileparámetro opcional para la printfunción

with open("Output.txt", "w") as text_file:
    print("Purchase Amount: {}".format(TotalAmount), file=text_file)

Python3.6 introdujo f-strings para otra alternativa

with open("Output.txt", "w") as text_file:
    print(f"Purchase Amount: {TotalAmount}", file=text_file)

2
Suponiendo que TotalAmount es un número entero, ¿no debería ser "% s" un "% d"?
Rui Curado

66
@RuiCurado, si TotalAmountes un int, %do %shará lo mismo.
John La Rooy

2
Gran respuesta. Estoy viendo un error de sintaxis con un caso de uso casi idéntico: with . . .: print('{0}'.format(some_var), file=text_file)está lanzando: SyntaxError: invalid syntaxen el signo igual ...
nicorellius

44
@nicorellius, si desea usar eso con Python2.x, debe colocarlo from __future__ import print_functionen la parte superior del archivo. Tenga en cuenta que esto transformará todas las declaraciones de impresión en el archivo a las llamadas de función más nuevas.
John La Rooy

Para asegurarse de saber cuál es el tipo de variable, a menudo conviértalo para asegurarse, por ejemplo: "text_file.write ('Importe de compra:% s'% str (TotalAmount))", que funcionará con listas, cadenas, flotantes, ints y cualquier otra cosa que se pueda convertir en una cadena.
EBo


29

Si estás usando Python3.

entonces puedes usar la función de impresión :

your_data = {"Purchase Amount": 'TotalAmount'}
print(your_data,  file=open('D:\log.txt', 'w'))

Para python2

este es el ejemplo de Python Print String To Text File

def my_func():
    """
    this function return some value
    :return:
    """
    return 25.256


def write_file(data):
    """
    this function write data to file
    :param data:
    :return:
    """
    file_name = r'D:\log.txt'
    with open(file_name, 'w') as x_file:
        x_file.write('{} TotalAmount'.format(data))


def run():
    data = my_func()
    write_file(data)


run()

19

Si está usando numpy, puede imprimir una sola (o multiplicar) cadenas en un archivo con solo una línea:

numpy.savetxt('Output.txt', ["Purchase Amount: %s" % TotalAmount], fmt='%s')

13

Con el uso del módulo pathlib, la sangría no es necesaria.

import pathlib
pathlib.Path("output.txt").write_text("Purchase Amount: {}" .format(TotalAmount))

A partir de python 3.6, las cadenas f están disponibles.

pathlib.Path("output.txt").write_text(f"Purchase Amount: {TotalAmount}")
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.