StackUser_py
StackUser_py

Reputation: 173

Python filename change

I have a number of videos in a directory on my Mac that all have a specific string in the file name that I want to remove, but I want to keep the rest of the file name as it is. I'm running this python script from terminal.

I have this syntax but it doesn't seem to work. Is it practical to use the following? It seems to simple to be the best way to do this sort of thing which is why I don't think it works.

from os import rename, listdir

text = "Some text I want to remove from file name"
files = listdir("/Users/Admin/Desktop/Dir_of_videos/")

for x in files:
    if text in files:
        os.rename(files, files.replace(text, ""))

Upvotes: 0

Views: 129

Answers (1)

user2489252
user2489252

Reputation:

the problem is that you get incomplete paths when you are using listdir, basically, it returns only the files in the directory without the prepending path to the directory

this should do the job:

import os

in_dir = './test'
remove = 'hello'

paths = [os.path.join(in_dir,file) for file in os.listdir(in_dir) if remove in file]

for file in paths:
    os.rename(file, file.replace(remove, ""))

Upvotes: 1

Related Questions