Imprimir string em arquivo de texto

653

Estou usando o Python para abrir um documento de texto:

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

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

text_file.close()

Eu quero substituir o valor de uma variável de seqüência de caracteres TotalAmountno documento de texto. Alguém por favor pode me informar como fazer isso?

The Woo
fonte

Respostas:

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

Se você usar um gerenciador de contexto, o arquivo será fechado automaticamente para você

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

Se você estiver usando Python2.6 ou superior, é preferível usar str.format()

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

Para python2.7 e superior, você pode usar em {}vez de{0}

No Python3, há um fileparâmetro opcional para a printfunção

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

Python3.6 introduziu f-strings para outra alternativa

with open("Output.txt", "w") as text_file:
    print(f"Purchase Amount: {TotalAmount}", file=text_file)
John La Rooy
fonte
2
Supondo que TotalAmount seja um número inteiro, o "% s" não deve ser um "% d"?
Rui Curado
6
@RuiCurado, se TotalAmountfor um int, %dou %sfará a mesma coisa.
John La Rooy
2
Ótima resposta. Estou vendo um erro de sintaxe com um caso de uso quase idêntico: with . . .: print('{0}'.format(some_var), file=text_file)está jogando: SyntaxError: invalid syntaxo sinal de igual ...
nicorellius
4
@nicorellius, se você quiser usá-lo com o Python2.x, precisará colocar from __future__ import print_functionno topo do arquivo. Observe que isso transformará todas as instruções de impressão no arquivo nas chamadas de função mais recentes.
John La Rooy
Para ter certeza de que tipo de variável é frequentemente convertido, por exemplo, "text_file.write ('Valor da compra:% s'% str (TotalAmount))" "que funcionará com listas, cadeias, flutuadores, ints e qualquer outra coisa que seja conversível em uma string.
EBo 9/09/16
43

Caso deseje passar vários argumentos, você pode usar uma tupla

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

Mais: Imprimir vários argumentos em python

user1767754
fonte
29

Se você estiver usando Python3.

então você pode usar a função de impressão :

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

Para python2

este é o exemplo do 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
fonte
19

Se você estiver usando numpy, a impressão de uma única (ou multiplicação) de seqüências de caracteres em um arquivo pode ser feita com apenas uma linha:

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

Com o uso do módulo pathlib, o recuo não é necessário.

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

A partir do python 3.6, as strings-f estão disponíveis.

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