удаление подстрок из имен подкаталогов, используя значения, содержащиеся в списке - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть родительский каталог, который содержит много подкаталогов.Я хочу создать скрипт, который перебирает все подкаталоги и удаляет все ключевые слова, которые я указал в переменной списка.

Я не совсем уверен, как этого добиться.

В настоящее времяУ меня есть это:

import os
directory = next(os.walk('.'))[1]


stringstoremove = ['string1','string2','string3','string4','string5']


for folders in directory:
    os.rename

И, возможно, этот тип логики, чтобы проверить, существует ли строка в имени подкаталога:

if any(words in inputstring for words in stringstoremove):
    print ("TRUE")
else:
    print ("FALSE")

Пытаясь сделать все возможное, чтобы разобрать задачу,но я сейчас хожу по кругу

Спасибо, ребята

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

Начиная с существующего кода:

import os
directory = next(os.walk('.'))[1]

stringstoremove = ['string1','string2','string3','string4','string5']

for folder in directory :
    new_folder = folder
    for r in stringstoremove :
        new_folder = new_folder.replace( r, '')

    if folder != new_folder :  # don't rename if it's the same
        os.rename( folder, new_folder )
0 голосов
/ 28 сентября 2019

Если вы хотите переименовать те подкаталоги, которые совпадают в вашем списке stringstoremove, тогда будет полезен следующий скрипт.

import os
import re

path = "./" # parent directory path
sub_dirs = os.listdir(path)
stringstoremove = ['string1','string2','string3','string4','string5']
for directory_name in sub_dirs:
    if os.path.isdir(path + directory):
        for string in stringstoremove:
            if string in directory_name:
                try:
                    new_name = re.sub(string, "", directory_name)
                    os.rename(path + directory, path + new_name) # rename this directory
                except Exception as e:
                    print (e)
...