Python Forum
Rename Multiple files in directory to remove special characters - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Rename Multiple files in directory to remove special characters (/thread-32534.html)



Rename Multiple files in directory to remove special characters - nyawadasi - Feb-16-2021

The purpose of the script below is to rename multiple folders in a directory. File is named 2324[folder 1], 3242343[Folder 2), 4343[folder 3]. The purpose of script is to rename files to keep only folder 1, folder 2, and folder 3 name. I currently have 20,000 folders to rename

#!/usr/bin/python
import os

path = r"/Users/princessnaana/Desktop/Python_Examples/Naana"

directory_list = os.listdir(path)

for f in directory_list:
    src = f
    dst = f[f.find('[') + 1:].replace(']','')
    replace_name = dst
    os.rename (dst)

when I print the script the code renames the files as intended however when I run the code it does not change the names of the folder in the directory.


RE: Rename Multiple files in directory to remove special characters - BashBedlam - Feb-16-2021

Try it like this:

os.rename(src, dst)



RE: Rename Multiple files in directory to remove special characters - nyawadasi - Feb-16-2021

(Feb-16-2021, 06:32 PM)BashBedlam Wrote: Try it like this:

os.rename(src, dst)
I am getting the error "FileNotFoundError: [Errno 2] No such file or directory" when I use os.rename(src, dst)


RE: Rename Multiple files in directory to remove special characters - BashBedlam - Feb-16-2021

Try this and tell me if it prints out the files that you want to change and the names that you want to change them to.

import os
 
path = r"/Users/princessnaana/Desktop/Python_Examples/Naana"

directory_list = os.listdir(path)

for f in directory_list:
	if '[' in f and ']' in f :
		dst = f[f.find('[') + 1:].replace(']','')
		print (f, dst)



RE: Rename Multiple files in directory to remove special characters - snippsat - Feb-16-2021

(Feb-16-2021, 07:50 PM)nyawadasi Wrote: I am getting the error "FileNotFoundError: [Errno 2] No such file or directory" when I use os.rename(src, dst)
If not run scripts same folder as path given then rename will not find files.
A trick is to add first os.chdir(path) so switch to path folder,then do rename.
An other way is to work with full path to files.
os.rename(os.path.join(path, scr), os.path.join(path, dst))



RE: Rename Multiple files in directory to remove special characters - deanhystad - Feb-16-2021

It doesn't find the src file because the os.listdir(path) only returns the names, not the paths.

I think our logic is also questionable. What if you encounter a folder that doesn't have []?


RE: Rename Multiple files in directory to remove special characters - nyawadasi - Feb-16-2021

(Feb-16-2021, 08:48 PM)BashBedlam Wrote: Try this and tell me if it prints out the files that you want to change and the names that you want to change them to.

import os
 
path = r"/Users/princessnaana/Desktop/Python_Examples/Naana"

directory_list = os.listdir(path)

for f in directory_list:
	if '[' in f and ']' in f :
		dst = f[f.find('[') + 1:].replace(']','')
		print (f, dst)

This is the results I get when I run it. But when I use the os.rename command to execute the script to change the name change on the folders I get an error with os.rename

Results below

122323-[folder 8] folder 8
754332323[folder 6] folder 6
234123-[folder] folder
98643-[folder 10] folder 10
12332-[folder 3] folder 3
.[folder7] folder7
.[folder 9] folder 9
78544-[folder 5] folder 5
.[folder 4] folder 4
3435454-[folder 2] folder 2


Thanks for your help!!


RE: Rename Multiple files in directory to remove special characters - BashBedlam - Feb-16-2021

I'm sorry, I missed the most important part. os.rename (path + f, path + dst)

import os
  
path = "/Users/princessnaana/Desktop/Python_Examples/Naana/"

directory_list = os.listdir(path)
 
for f in directory_list:
    if '[' in f and ']' in f :
        dst = f[f.find('[') + 1:].replace(']','')
        os.rename (path + f, path + dst)



RE: Rename Multiple files in directory to remove special characters - nyawadasi - Feb-16-2021

Smile That worked!! Thank you so much. You just saved me hours upon hours !!. I appreciate it !!


RE: Rename Multiple files in directory to remove special characters - BashBedlam - Feb-16-2021

You are welcome. I know what it's like to spend hours trying to figure something out Wall