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?

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)

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


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

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

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}")
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.