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?

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)

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


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()

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')

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}")
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.