2017-10-18 4 views
0

j'ai environ 300 fichiers dans un dossier dans lequel la première ligne est 1, je voudrais changer à 0,et changer la première lettre du fichier

c'est le morceau de code j'utilise pour le faire

import os 


for root,dirs,files in os.walk('/home/decentmakeover2/try/'): 
for file in files: 

    if file.endswith('.txt'): 
     with open(file, 'r+b') as f: 
      line = next(f) # grab first line 
      old = '1' 
      new = '0' 
      f.seek(0) 
      f.write(line.replace(old, new)) 

mais je reçois cette erreur

Traceback (most recent call last): 
    File "one.py", line 8, in <module> 
with open(file, 'r+b') as f: 
IOError: [Errno 2] No such file or directory: 'yield_021.txt' 

mais la chose est que le fichier est présent dans le dossier et son tout comme les autres fichiers, si je supprime le fichier puis-je obtenir la même erreur mais avec un fichier différent nom

des idées?

Répondre

2

Utilisez os.path.join et joignez votre racine avec votre nom de fichier, car open a besoin du chemin d'accès complet pour fonctionner.

with open(os.path.join(root, file), ...) as f: 

root est la première valeur retournée par os.walk.

+0

C'est parfait! – Ryan

+0

je dois attendre 10 minutes avant de pouvoir l'accepter – Ryan

+0

@Ryan Pas de problème, je vous en prie. –