Cetak string ke file teks

653

Saya menggunakan Python untuk membuka dokumen teks:

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

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

text_file.close()

Saya ingin mengganti nilai variabel string TotalAmountke dalam dokumen teks. Dapatkah seseorang tolong beri tahu saya cara melakukan ini?

Woo
sumber

Jawaban:

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

Jika Anda menggunakan manajer konteks, file ditutup secara otomatis untuk Anda

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

Jika Anda menggunakan Python2.6 atau lebih tinggi, itu lebih disukai untuk digunakan str.format()

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

Untuk python2.7 dan lebih tinggi Anda dapat menggunakan {}bukannya{0}

Di Python3, ada fileparameter opsional untuk printfungsi ini

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

Python3.6 memperkenalkan f-string untuk alternatif lain

with open("Output.txt", "w") as text_file:
    print(f"Purchase Amount: {TotalAmount}", file=text_file)
John La Rooy
sumber
2
Dengan anggapan TotalAmount adalah bilangan bulat, bukankah "% s" menjadi "% d"?
Rui Curado
6
@RuiCurado, jika TotalAmountadalah int, baik %datau %sakan melakukan hal yang sama.
John La Rooy
2
Jawaban yang bagus Saya melihat kesalahan sintaks dengan kasus penggunaan yang hampir identik: with . . .: print('{0}'.format(some_var), file=text_file)melempar: SyntaxError: invalid syntaxpada tanda sama dengan ...
nicorellius
4
@nicorellius, jika Anda ingin menggunakannya dengan Python2.x Anda harus meletakkannya from __future__ import print_functiondi bagian atas file. Perhatikan bahwa ini akan mengubah semua pernyataan cetak dalam file menjadi panggilan fungsi yang lebih baru.
John La Rooy
Untuk memastikan tahu apa tipe variabel yang sering dikonversikan untuk memastikan, mis: "text_file.write ('Jumlah Pembelian:% s'% str (TotalAmount))" yang akan berfungsi dengan daftar, string, float, ints, dan hal lain yang dapat dikonversi menjadi string.
EBo
43

Jika Anda ingin memberikan beberapa argumen, Anda bisa menggunakan tuple

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

Lainnya: Cetak beberapa argumen dengan python

pengguna1767754
sumber
29

Jika Anda menggunakan Python3.

maka Anda dapat menggunakan Fungsi Cetak :

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

Untuk python2

ini adalah contoh String Cetak Python Ke File Teks

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
sumber
19

Jika Anda menggunakan numpy, mencetak satu (atau gandakan) string ke file dapat dilakukan hanya dengan satu baris:

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

Dengan menggunakan modul pathlib, indentasi tidak diperlukan.

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

Pada python 3.6, f-string tersedia.

pathlib.Path("output.txt").write_text(f"Purchase Amount: {TotalAmount}")
naoki fujita
sumber