-1
import os

nameList = os.listdir()
#storing file names in nameList list

newList = []
for name in nameList:
    if name.endswith(".jpg"):
        newList.append(name)
        # print(name)
    else:
        pass
#creating new list and storing only .jpg files

toChange = [5, 1, 3]
toChange.sort()

j = toChange[0]

# import pdb; pdb.set_trace()
#debugger

for name in newList:
    for j in toChange:
        newName = name.replace(newList[j], str(j))
        os.rename(name, newName)
        print(newName)
        break

I want to change file names of 2nd, 4th and 6th files as denoted in toChange list. But I'm only able to change file name of 2nd file. j value is not iterating. I tried removing break but it gives me error saying cannot find specified file. Please help. Thanks

1 Answers1

0

Try this:

for index, name in enumerate(newList):
    if index in toChange:
        newName = name.replace(name, str(index))
        os.rename(name, newName)
        print(newName)

Index is a index each variable in newList. Then you check is this index is in your list toChange. If it is you change file name.

Enumerate:

for index, number in enumerate([10, 20, 30]):
        print('index -> {}'.format(index))
        print('number -> {}'.format(number))

>>>
 index -> 0
 number -> 10

 index -> 1
 number -> 20

 index -> 2
 number -> 30

How work 'in':

2 in [1,2,3]
>> True
2 in [1,3]
>> False
CezarySzulc
  • 1,849
  • 1
  • 14
  • 30