Travailler sur la sortie de texte et de variables dans un fichier .txt via python. Et ça ne marche pas.

f=open("Output.txt", "a")
f.write("Number Plate:", np ,"\n")
f.write("Valid:", valid ,"\n")
f.write("Speed:", speed ,"\n")
f.write("Ticket:", ticket ,"\n")
f.wrtie("Ticket Price:", ticketprice ,"\n")
f.write("\n")
f.close()

C'est l'erreur qui est donnée lorsque je l'exécute.

f.write("Number Plate:", np ,"\n")
TypeError: write() takes exactly one argument (3 given)

Toute aide est grandement appréciée

0
user9754923 23 mai 2018 à 11:04

3 réponses

Meilleure réponse

Essayez d'utiliser str.format.

Ex:

f=open("Output.txt", "a")
f.write("Number Plate: {0}".format(np))
f.write("Valid: {0}".format(valid ))
f.write("Speed: {0}".format(speed ))
f.write("Ticket: {0}".format(ticket ))
f.write("Ticket Price: {0}".format(ticketprice ))
f.write("\n")
f.close()

Remarque : f.write ne prend qu'un seul argument, vous essayez de passer 3 ("Number Plate:", np ,"\n")

1
Rakesh 23 mai 2018 à 08:13

Vous pouvez simplement utiliser la fonction str()

La fonction str () est destinée à renvoyer des représentations de valeurs qui sont assez lisibles par l'homme.

Et votre code valide sera comme-

f=open("Output.txt", "a")
f.write("Number Plate:" + str(np) + "\n")
f.write("Valid:" + str(valid) + "\n")
f.write("Speed:" + str(speed) + "\n")
f.write("Ticket:" + str(ticket) + "\n")
f.wrtie("Ticket Price:" + str(ticketprice) + "\n")
f.write("\n")
f.close()

Votre code donnant l'erreur, TypeError: write() takes exactly one argument (3 given)

parce que

La méthode write() ne prend qu'un seul argument, mais vous fournissez 3 arguments

1) "Plaque d'immatriculation:", 2) np et 3) "\ n"

0
Smaranjit 23 mai 2018 à 08:51

Vous pouvez essayer comme ceci:

with open("Output.txt", "a") as f:
    f.write("Number Plate:" + str(np) + "\n")
    f.write("Valid:" + str(valid) + "\n")
    f.write("Speed:" + str(speed) + "\n")
    f.write("Ticket:" + str(ticket) + "\n")
    f.write("Ticket Price:" + str(ticketprice) + "\n")
    f.write("\n")

Explication:

Si vous utilisez with open...., il n'est pas nécessaire de spécifier explicitement le f.close(). Et aussi dans f.write() en utilisant la concaténation de chaînes +, vous pouvez obtenir celle requise.

0
kvmahesh 23 mai 2018 à 08:25