Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python os.rename and os.walk together

I just wrote a python script to get rid of some annoying suffixes in filenames,

here's my code:

import os

for root, dirs, files in os.walk("path"):

    for filename in files:

        if filename.endswith("[AnnoyingTag].mov"):

            os.rename(filename, filename[:-18]+'.mov')

but I got the error in the last line:

OSError: [Errno 2] No such file or directory

I am pretty sure that I have the right path because I can print out all filenames correctly.

...really have no idea why this can't work.

Thanks for your answers

like image 428
Lin Ti-Wen Avatar asked Jun 23 '13 05:06

Lin Ti-Wen


1 Answers

The preferred way to join paths is to use os.path.join, change this line:

os.rename(filename, filename[:-18]+'.mov')

Replace it with this:

os.rename(os.path.join(root, filename), os.path.join(root, filename[:-18]+'.mov'))
like image 176
Óscar López Avatar answered Oct 15 '22 16:10

Óscar López