Python débutant: essayer de créer un script qui ouvre un fichier et remplace les mots
-
24-09-2019 - |
Question
im essayant de créer un script qui ouvre un fichier et remplacer tous les « hola » par « bonjour ».
f=open("kk.txt","w")
for line in f:
if "hola" in line:
line=line.replace('hola','hello')
f.close()
Mais im obtenir cette erreur:
retraçage (dernier appel le plus récent):
Fichier "prueba.py", ligne 3, en pour la ligne à f: IOError: [Errno 9] descripteur de fichier Bad
Toute idée?
Javi
La solution
Votre principal problème est que vous ouvrez le fichier pour l'écriture d'abord. Lorsque vous ouvrez un fichier pour l'écriture, le contenu du fichier sont supprimés , ce qui le rend assez difficile à faire remplacer! Si vous voulez remplacer les mots dans le fichier, vous disposez d'un processus en trois étapes:
- Lire le fichier dans une chaîne
- faire des remplacements dans cette chaîne
- Ecrire cette chaîne dans le fichier
Dans le code:
# open for reading first since we need to get the text out
f = open('kk.txt','r')
# step 1
data = f.read()
# step 2
data = data.replace("hola", "hello")
f.close()
# *now* open for writing
f = open('kk.txt', 'w')
# step 3
f.write(data)
f.close()
Autres conseils
open('test.txt', 'w').write(open('test.txt', 'r').read().replace('hola', 'hello'))
Ou si vous voulez fermer correctement le fichier:
with open('test.txt', 'r') as src:
src_text = src.read()
with open('test.txt', 'w') as dst:
dst.write(src_text.replace('hola', 'hello'))
Vous avez ouvert le fichier pour l'écriture, mais vous lisez de lui. Ouvrez le fichier d'origine pour la lecture et un nouveau fichier pour l'écriture. Après le remplacement, renommer le hors original et le nouveau dans.
Vous pouvez également jeter un oeil à la déclaration avec .