Ich habe den folgenden Code geschrieben, um durch Ordner und ihre Dateien zu durchlaufen und jede Datei in jedem Ordner als Index der Datei im Ordner umzubenennen. ZB die erste Datei in jedem Ordner heißt 1.JPG
, die zweite 2.JPG
und so weiter. Die Ordnernamen sind Ganzzahlen von 1 bis 82. Ich brauche den Ordnernamen, um den Pfad in os.rename()
anzugeben, und plante, ihn aus der dirs
Liste zu erhalten, da die Verzeichnisse nicht in Reihenfolge durchläuft.Index Fehler für die Liste in Python
Code:
import os
import sys
path='/home/srilatha/Desktop/Research_intern/Data_sets/Final'
i=0
for root, dirs, files in os.walk(path):
print(dirs)
print(dirs[i])
#folder_name=dirs[0]
#print(folder_name)
j=0
for name in sorted(files):
j+=1
#print('j=')
#print(j)
print(name)
new=str(j)
new_name=new+'.JPG'
print(new_name)
#os.rename(name,new_name)
i+=1
Fehlermeldung:
/usr/bin/python3.4 /home/srilatha/PycharmProjects/Research_Intern/Sort_images_into_folders.py
['9', '43', '78', '7', '51', '15', '4', '68', '48', '67', '27', '16', '55', '20', '57', '38', '47', '18', '77', '82', '12', '65', '25', '59', '49', '30', '36', '79', '71', '17', '22', '42', '40', '73', '19', '24', '10', '37', '32', '3', '64', '62', '58', '13', '72', '2', '14', '70', '11', '66', '69', '50', '54', '34', '5', '52', '81', '26', '39', '60', '1', '56', '33', '80', '23', '53', '44', '45', '29', '41', '28', '35', '6', '46', '31', '8', '63', '75', '61', '76', '74', '21']
9
[]
Traceback (most recent call last):
File "/home/srilatha/PycharmProjects/Research_Intern/Sort_images_into_folders.py", line 9, in <module>
print(dirs[i])
IndexError: list index out of range
Warum 'print (dirs [i])' und 'i + = 1' in der äußeren Schleife? Sollte es nicht noch einen verschachtelten geben? – LogicStuff
Wenn Sie einen Index verfolgen möchten, während Sie über etwas iterieren, verwenden Sie [enumerate] (https://docs.python.org/2/library/functions.html#enumerate). –
@LogicStuff Diese Anweisungen gelten für die Ordnernamen. – RaviTej310