在Python中删除文件名上的某些字符模式

在Python中删除文件名上的某些字符模式,python,Python,我需要获取一个目录的名称,并查看它是否与名称字符串中的某个模式匹配,在本例中为[FLAC],并用前面的空格删除该模式。然后我将把它保存在一个变量上,并重命名目录本身。如何在Python中实现这一点 这是我现在正在尝试的代码: def cfn(dpath): for df in os.listdir(dpath): if df.endswith('[FLAC]'): df.strip('[FLAC]') print(df) 既然

我需要获取一个目录的名称,并查看它是否与名称字符串中的某个模式匹配,在本例中为[FLAC],并用前面的空格删除该模式。然后我将把它保存在一个变量上,并重命名目录本身。如何在Python中实现这一点

这是我现在正在尝试的代码:

def cfn(dpath):
    for df in os.listdir(dpath):
        if df.endswith('[FLAC]'):
           df.strip('[FLAC]')
           print(df)

既然您正在询问如何以编程方式重命名目录,我将假设您有很多事情要做。(递归地?) 您将需要:

下面是程序的结构

import os
my_list = []
for root, dirs, files in os.walk('./'):
    #append the root to a list to my_list if it meets the criteria
for dir in my_list:
     #change the name of the dir here.

“如何在Python中实现这一点?”-您可以通过编写代码来实现。试一试,然后你的问题告诉我们你写了什么,你的具体问题是什么。你应该试着想出一些示例代码,甚至是伪代码。人们会更容易理解你的问题并帮助你。
strip
不会做你想做的事。它将从字符串的两端剥离该字符串中的所有字符,每次剥离的次数相同。因此
ACDC
.strip('[FLAC]')`返回
'D'
,因为它删除了前面和
C
和末尾的
AC
运行。当然,这些都不重要,因为您从不分配结果(
str
是不可变的;所有方法都返回new
str
而保持原始
str
不变)。您可能需要类似于
if df.endswith('[FLAC]'):
df=df[:-len('[FLAC]')]
print(df)
。我想做的是递归地剥离目录名上的某些模式,并将其存储在变量中,这样我就可以将生成的目录名附加到文件中,并重命名它。但最初我想知道的是如何剥离/删除目录名中与某些模式匹配的不需要的部分,例如在示例[FLAC]或[EAC]中,使用“re”模块或split()对目录名进行字符串操作,然后使用shutil.move(src,dat)重命名目录。