使用lis中的值从子目录名称中删除子字符串

2024-10-02 02:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含很多子目录的父目录。我想创建一个脚本,在所有子目录中循环并删除我在list变量中指定的任何关键字

我不太清楚如何做到这一点

目前我有:

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")

我尽力去解构这项任务,但现在我在兜圈子

谢谢你们


Tags: inimport目录脚本foros关键字directory
2条回答

从现有代码开始:

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 )

如果您想重命名那些在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)

相关问题 更多 >

    热门问题