Python débutant: essayer de créer un script qui ouvre un fichier et remplace les mots

StackOverflow https://stackoverflow.com/questions/2577671

  •  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

Était-ce utile?

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:

  1. Lire le fichier dans une chaîne
  2. faire des remplacements dans cette chaîne
  3. 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 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top