2 votes

Python qui écrit des données dans un fichier ne fonctionne que lorsqu'il est exécuté depuis la console

Si je cours

file = open("BAL.txt","w")
I = '200'
file.write(I)
file.close

à partir d'un script, il ne sort rien dans le fichier. (Il écrase littéralement le fichier avec rien).

De plus, en exécutant cat BAL.txt, on passe à la ligne suivante comme s'il n'y avait rien dans le fichier.

Mais si je l'exécute ligne par ligne dans une console python, il fonctionne parfaitement bien. Pourquoi cela se produit-il ? (Je suis un débutant apprenant python l'erreur peut être super évident. J'ai passé environ 2 heures à essayer de comprendre ce problème.)
Merci d'avance

4voto

Simon Points 5692

Vous ne fermez pas votre dossier correctement. Pour le fermer, il vous manque la fonction () à la fin de file.close donc ça devrait ressembler à ça :

file = open("BAL.txt", "w")
file.write("This has been written to a file")
file.close()

Ce site présente le même exemple et peut vous être utile.


Une autre méthode, particulièrement utile lorsque vous ajoutez plusieurs valeurs dans un seul fichier, est d'utiliser quelque chose comme with open("BAL.txt","w") as file: . Voici votre script réécrit pour inclure cet exemple :

I = '200'
with open("BAL.txt","w") as file:
    file.write(I)

Cela ouvre notre fichier avec la valeur file et nous permet d'y écrire des valeurs. Notez également que file.close() n'est pas nécessaire ici et lors de l'ajout de texte w+ doit être utilisé.

3voto

Hippolippo Points 185

Pour écrire dans un fichier, vous faites ceci :

file = open("file.txt","w")
file.write("something")
file.close()

lorsque vous utilisez file.write() cela supprime tout le contenu du fichier, si vous voulez écrire à la fin du fichier, faites-le :

file = open("file.text","w+")
file.write(file.read()+"something")
file.close()

Il existe d'autres façons de procéder, mais celle-ci est la plus intuitive (mais pas la plus efficace). De plus, l'autre méthode a tendance à présenter des bogues, il n'y a donc aucune raison de l'afficher car celle-ci est fiable.

2voto

QFlat Points 48

Tout d'abord, il vous manque les parenthèses lorsque vous fermez le fichier. Deuxièmement, écrire dans un fichier devrait être fait comme ceci :

file = open("BAL.txt", "w")
file.write("This has been written to a file")
file.close()

Faites-moi savoir si vous avez des questions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X