WindowsError: [Erreur 2] Le système ne trouve pas le fichier spécifié
J'ai un problème avec ce code. Je suis en train de renommer tous les fichiers dans un dossier, de sorte qu'ils n'ont plus +'s
! Cela a travaillé de nombreuses fois auparavant, mais soudain, je reçois l'erreur:
WindowsError: [Error 2] The system cannot find the file specified at line 26
La ligne 26 est la dernière ligne dans le code.
Personne ne sait pourquoi ce qui se passe? J'ai juste promis à quelqu'un, je pourrais faire cela en 5 minutes parce que j'avais un code! Dommage que ça ne marche pas!!
import os, glob, sys
folder = "C:\\Documents and Settings\\DuffA\\Bureaublad\\Johan\G304655_1"
for root, dirs, filenames in os.walk(folder):
for filename in filenames:
filename = os.path.join(root, filename)
old = "+"
new = "_"
for root, dirs, filenames in os.walk(folder):
for filename in filenames:
if old in filename:
print (filename)
os.rename(filename, filename.replace(old,new))
source d'informationauteur Alice Duff
Vous devez vous connecter pour publier un commentaire.
Je soupçonne que vous pourriez avoir des problèmes avec les sous-répertoires.
Si vous avez un répertoire avec des fichiers "
a
", "b
" et le sous-répertoire "dir
" avec des fichiers "sub+1
" et "sub+2
", l'appel àos.walk()
donnera les valeurs suivantes:Lorsque vous traitez la deuxième tuple, vous allez appeler
rename()
avec'sub+1', 'sub_1'
que les arguments, quand ce que vous voulez, c'est'dir\sub+1', 'dir\sub_1'
.Pour résoudre ce problème, modifier la boucle dans votre code:
qui va concaténer le répertoire avec le nom de fichier avant de vous faire quelque chose avec elle.
Edit:
Je pense que le ci-dessus est la bonne réponse, mais pas tout à fait le droit de la raison.
En supposant que vous avez un fichier "
File+1
" dans le répertoire,os.walk()
sera de retourSauf si vous êtes dans le "
10G304655_1
" directory, lorsque vous appelezrename()
le fichier "File+1
" ne sera pas trouvé dans la actuel répertoire, ce qui n'est pas le même que le répertoireos.walk()
est à la recherche de. En faisant l'appel àos.path.join()
vous dites renommer de regarder dans le bon répertoire.Edit 2
Un exemple de code pourraient être:
Vous utilisez
splitext
pour déterminer le nom de fichier source pour renommer:Si vous rencontrez un fichier avec une extension, de toute évidence, en essayant de renommer le nom du fichier sans l'extension conduira à une "fichier non trouvé" erreur.