问题
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
回答1:
You can replace
os.rename(filename, filename[:-18]+'.mov')
with
os.rename(root + os.sep + filename, root + os.sep + filename[:-18]+'.mov')
回答2:
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'))
回答3:
Fixed:
import os
for root, dirs, files in os.walk("path"):
for filename in files:
if filename.endswith("[AnnoyingTag].mov"):
os.rename(root+'\\'+filename, root+'\\'+filename[:-18]+'.mov')
I think your problem is that the files you're renaming aren't in the current working directory.
来源:https://stackoverflow.com/questions/17257878/python-os-rename-and-os-walk-together