Python 如何在os.replace中忽略区分大小写

Python 如何在os.replace中忽略区分大小写,python,operating-system,Python,Operating System,我有一个脚本,它用我指定的新文件名替换文件名,但是,现在它是区分大小写的(如果文件名=DM,但我输入DM,它不会被替换) 我已经在os.rename中尝试了filename.lower(),但似乎不起作用。虽然没有错误,但该文件名保持不变 导入操作系统 old='dm' new='datamining' path=os.getcwd() filenames=os.listdir(路径) 对于文件名中的文件名: os.rename(path+'\\'+filename.lower(),path+'

我有一个脚本,它用我指定的新文件名替换文件名,但是,现在它是区分大小写的(如果文件名=DM,但我输入DM,它不会被替换)

我已经在os.rename中尝试了filename.lower(),但似乎不起作用。虽然没有错误,但该文件名保持不变

导入操作系统
old='dm'
new='datamining'
path=os.getcwd()
filenames=os.listdir(路径)
对于文件名中的文件名:
os.rename(path+'\\'+filename.lower(),path+'\\'+filename.replace(旧的,新的))

您的实际文件名不一定是小写的,但您正在向
replace
方法传递一个小写字符串
'dm'
。它在文件名中找不到小写的
'dm'
,因此返回相同的文件名,导致
os.rename
不执行任何操作

在调用
replace
方法之前,可以将文件名小写:

os.rename( path+'\\'+ filename , path+'\\'+ filename.lower().replace(old , new) )
但是,这将强制新文件名完全使用小写。如果要保留其余文件名的大小写,可以使用带有
IGNORECASE
标志的
re.sub

import re

...

os.rename( path+'\\'+ filename , path+'\\'+ re.sub(old, new, filename, flags=re.IGNORECASE))