Imprimer la chaîne dans un fichier texte

653

J'utilise Python pour ouvrir un document texte:

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

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

text_file.close()

Je veux remplacer la valeur d'une variable de chaîne TotalAmountdans le document texte. Quelqu'un peut-il me faire savoir comment procéder?

The Woo
la source

Réponses:

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

Si vous utilisez un gestionnaire de contexte, le fichier est fermé automatiquement pour vous

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

Si vous utilisez Python2.6 ou supérieur, il est préférable d'utiliser str.format()

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

Pour python2.7 et supérieur, vous pouvez utiliser {}au lieu de{0}

En Python3, il y a un fileparamètre facultatif à la printfonction

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

Python3.6 a introduit des chaînes f pour une autre alternative

with open("Output.txt", "w") as text_file:
    print(f"Purchase Amount: {TotalAmount}", file=text_file)
John La Rooy
la source
2
En supposant que TotalAmount est un entier, le "% s" ne devrait-il pas être un "% d"?
Rui Curado
6
@RuiCurado, si TotalAmountest un int, %dou %sfera la même chose.
John La Rooy
2
Très bonne réponse. Je vois une erreur de syntaxe avec un cas d'utilisation presque identique: with . . .: print('{0}'.format(some_var), file=text_file)jette: SyntaxError: invalid syntaxau signe égal ...
nicorellius
4
@nicorellius, si vous souhaitez l'utiliser avec Python2.x, vous devez le placer from __future__ import print_functionen haut du fichier. Notez que cela transformera toutes les instructions d'impression du fichier en appels de fonction plus récents.
John La Rooy
Pour être sûr de savoir quel type de variable est souvent converti, assurez-vous, par exemple: "text_file.write ('Purchase Amount:% s'% str (TotalAmount))" qui fonctionnera avec les listes, chaînes, flottants, entiers et tout autre élément convertible en chaîne.
EBo
43

Si vous souhaitez transmettre plusieurs arguments, vous pouvez utiliser un tuple

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

Plus: Imprimer plusieurs arguments en python

user1767754
la source
29

Si vous utilisez Python3.

alors vous pouvez utiliser la fonction d'impression :

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

Pour python2

c'est l'exemple de 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
la source
19

Si vous utilisez numpy, l'impression d'une ou de plusieurs chaînes dans un fichier peut se faire avec une seule ligne:

numpy.savetxt('Output.txt', ["Purchase Amount: %s" % TotalAmount], fmt='%s')
Les mecs
la source
13

Avec l'utilisation du module pathlib, l'indentation n'est pas nécessaire.

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

Depuis python 3.6, les chaînes f sont disponibles.

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