La question est liée à la answer à propos de renommer les fichiers récursivement.Python: Comment remplacer les tirets dans les noms de fichiers?
Le code, modifié pour remplacer les tirets, ne fonctionne pas avec des cas tels que:
./Beginners Tools/Hello's -Trojans-/bif43243
./Linux/Nux Col - 1 Works (TEX & Pdf) - T'eouhsoe & More (33323 - 34432)
./Git/peepcode-git-mov/c6_branch_merge.mov
./haskell/OS 2007 - T aoue
./B Sites for Get-Big
Il a collaboré avec des cas tels que:
./oeu'oeu - X ee ls - Feb 2008.pdf
donc je dois analyser les données. Comment puis-je remplacer correctement les tirets?
[Détails]
Le code est le lien, mais changé pour remplacer "-":
import os
for dirpath, dirs, files in os.walk(your_path):
for filename in files:
if '&' in filename:
os.rename(
os.path.join(dirpath, filename),
os.path.join(dirpath, filename.replace('-', '_'))
)
Le Python ne remplace pas tous les tableau de bord. Je pense que c'est parce que les noms contiennent des signes spéciaux qui ont arrêté le script plus tôt. Donc, je rencontrais des erreurs dans Scilla:
tar cvzf sed_backup.tar.gz `find documents | sed s/\.*/\'\&\'/`
tar: rojans-: Cannot stat: No such file or directory
tar: Error is not recoverable: exiting now
En raison des signes « « « et » - « toujours laissé les noms, le goudron-commande interpréter l'expression » » » comme une fin pour la trouver-commande et "- "comme un signe d'option dans le chemin" ./Beginners Outils/Bonjour de -Trojans-/bif43243"
La réponse que vous liez à des utilisations os.walk. Par conséquent, il est récursif. – unutbu
Il serait utile si vous avez posté l'extrait de code qui remplace les tirets, avec l'erreur que vous obtenez. –