Zeichenfolge in Textdatei drucken

650

Ich verwende Python, um ein Textdokument zu öffnen:

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

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

text_file.close()

Ich möchte den Wert einer Zeichenfolgenvariablen TotalAmountin das Textdokument einsetzen. Kann mir bitte jemand mitteilen, wie das geht?

Das Woo
quelle

Antworten:

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

Wenn Sie einen Kontextmanager verwenden, wird die Datei automatisch für Sie geschlossen

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

Wenn Sie Python2.6 oder höher verwenden, wird die Verwendung bevorzugt str.format()

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

Für Python2.7 und höher können Sie {}anstelle von verwenden{0}

In Python3 gibt es einen optionalen fileParameter für die printFunktion

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

Python3.6 führte F-Strings für eine andere Alternative ein

with open("Output.txt", "w") as text_file:
    print(f"Purchase Amount: {TotalAmount}", file=text_file)
John La Rooy
quelle
2
Angenommen, TotalAmount ist eine Ganzzahl, sollte "% s" nicht "% d" sein?
Rui Curado
6
@RuiCurado, wenn TotalAmountes ein ist int, entweder %doder %swird das gleiche tun.
John La Rooy
2
Gute Antwort. Ich sehe einen Syntaxfehler mit einem fast identischen Anwendungsfall: with . . .: print('{0}'.format(some_var), file=text_file)wirft: SyntaxError: invalid syntaxam Gleichheitszeichen ...
nicorellius
4
@nicorellius, wenn Sie das mit Python2.x verwenden möchten, müssen Sie es from __future__ import print_functionoben in die Datei einfügen . Beachten Sie, dass dadurch alle print-Anweisungen in der Datei in die neueren Funktionsaufrufe umgewandelt werden.
John La Rooy
Um sicherzustellen, dass der Variablentyp häufig konvertiert wird, stellen Sie Folgendes sicher: "text_file.write ('Kaufbetrag:% s'% str (TotalAmount))", das mit Listen, Zeichenfolgen, Gleitkommazahlen, Ints und alles andere, was in einen String konvertierbar ist.
EBo
43

Wenn Sie mehrere Argumente übergeben möchten, können Sie ein Tupel verwenden

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

Mehr: Drucken Sie mehrere Argumente in Python

user1767754
quelle
29

Wenn Sie Python3 verwenden.

dann können Sie die Druckfunktion verwenden :

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

Für Python2

Dies ist das Beispiel für 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
quelle
19

Wenn Sie numpy verwenden, kann das Drucken einer einzelnen (oder multiplizierten) Zeichenfolge in eine Datei mit nur einer Zeile erfolgen:

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

Bei Verwendung des Pathlib-Moduls ist keine Einrückung erforderlich.

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

Ab Python 3.6 sind F-Strings verfügbar.

pathlib.Path("output.txt").write_text(f"Purchase Amount: {TotalAmount}")
Naoki Fujita
quelle