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.