Stampa stringa su file di testo


653

Sto usando Python per aprire un documento di testo:

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

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

text_file.close()

Voglio sostituire il valore di una variabile stringa TotalAmountnel documento di testo. Qualcuno può farmi sapere come fare?

Risposte:


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

Se si utilizza un gestore di contesto, il file viene chiuso automaticamente

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

Se stai usando Python2.6 o versioni successive, è preferibile utilizzarlo str.format()

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

Per python2.7 e versioni successive è possibile utilizzare {}invece di{0}

In Python3, esiste un fileparametro facoltativo per la printfunzione

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

Python3.6 ha introdotto le stringhe f per un'altra alternativa

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

2
Supponendo che TotalAmount sia un numero intero, "% s" non dovrebbe essere un "% d"?
Rui Curado,

6
@RuiCurado, if TotalAmountis an int, entrambi %do %sfarà la stessa cosa.
John La Rooy,

2
Bella risposta. Sto vedendo un errore di sintassi con un caso d'uso quasi identico: with . . .: print('{0}'.format(some_var), file=text_file)sta lanciando: SyntaxError: invalid syntaxallo stesso segno ...
Nicorellius,

4
@nicorellius, se vuoi usarlo con Python2.x devi metterlo from __future__ import print_functionin cima al file. Si noti che ciò trasformerà tutte le istruzioni di stampa nel file nelle chiamate di funzione più recenti.
John La Rooy,

Per essere sicuro di sapere quale tipo di variabile viene spesso convertito per essere sicuri, ad esempio: "text_file.write (" Quantità di acquisto:% s "% str (TotalAmount))" che funzionerà con elenchi, stringhe, float, ints e qualsiasi altra cosa convertibile in una stringa.
EBo

43

Nel caso in cui desideri passare più argomenti, puoi utilizzare una tupla

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

Altro: stampa più argomenti in Python


29

Se stai usando Python3.

quindi è possibile utilizzare la funzione di stampa :

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

Per python2

questo è l'esempio di 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

Se si utilizza Numpy, la stampa di una singola stringa (o moltiplicazione) su un file può essere eseguita con una sola riga:

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

13

Con l'utilizzo del modulo pathlib, il rientro non è necessario.

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

A partire da Python 3.6, sono disponibili stringhe f.

pathlib.Path("output.txt").write_text(f"Purchase Amount: {TotalAmount}")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.