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?

El cortejar
fuente

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)
John La Rooy
fuente
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
43

En caso de que desee pasar varios argumentos, puede usar una tupla

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

Más: Imprimir múltiples argumentos en Python

usuario1767754
fuente
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()
Rajiv Sharma
fuente
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')
Guy s
fuente
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}")
naoki fujita
fuente