Je tente de prendre un nom de fichier tel que 'OP 40 856101.txt' à partir d'un répertoire, supprimer le fichier .txt, définir chaque mot à une variable spécifique, puis réorganiser le nom de fichier en fonction d'une commande requise telle que '856101 OP 040'. Ci-dessous mon code:Renommer plusieurs fichiers à la fois dans un répertoire
import os
dir = 'C:/Users/brian/Documents/Moeller'
orig = os.listdir(dir) #original names of the files in the folder
for orig_name in orig: #This loop splits each file name into a list of stings containing each word
f = os.path.splitext(orig_name)[0]
sep = f.split() #Separation is done by a space
for t in sep: #Loops across each list of strings into an if statement that saves each part to a specific variable
#print(t)
if t.isalpha() and len(t) == 3:
wc = t
elif len(t) > 3 and len(t) < 6:
wc = t
elif t == 'OP':
op = t
elif len(t) >= 4:
pnum = t
else:
opnum = t
if len(opnum) == 2:
opnum = '0' + opnum
new_nam = '%s %s %s %s' % (pnum,op,opnum, wc) #This is the variable that contain the text for the new name
print("The orig filename is %r, the new filename is %r" % (orig_name, new_nam))
os.rename(orig_name, new_nam)
Cependant, je reçois une erreur de ma dernière boucle où je tente de renommer chaque fichier dans le répertoire.
FileNotFoundError: [WinError 2] The system cannot find the file specified: '150 856101 OP CLEAN.txt' -> '856101 OP 150 CLEAN'
Le code fonctionne parfaitement jusqu'à ce que la commande os.rename(), si j'imprimer la new_nam variable, il imprime l'ordre de nommage correct pour tous les fichiers dans le répertoire. On dirait qu'il ne peut pas trouver le fichier original pour remplacer le nom de fichier par la chaîne dans new_nam. Je suppose qu'il s'agit d'un problème de répertoire, mais je suis plus récent avec python et je n'arrive pas à comprendre où modifier mon code. Tout aide ou avis sera le bienvenu!
A travaillé! Je vous remercie!! – Bkal05