【问题标题】:how to neglect case sensitivity in os.rename replace如何忽略 os.rename 替换中的大小写敏感性
【发布时间】:2023-03-24 08:14:01
【问题描述】:

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

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

import os

old = 'dm'
new = 'datamining'

path = os.getcwd()

filenames = os.listdir(path)
for filename in filenames:
    os.rename ( path+'\\'+ filename.lower() , path+'\\'+ filename.replace(old , new) )

【问题讨论】:

    标签: python operating-system


    【解决方案1】:

    您的实际文件名不一定是小写的,但是您将'dm' 的小写字符串传递给replace 方法。它在文件名中找不到小写的'dm',因此返回相同的文件名,导致os.rename什么都不做。

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

    os.rename( path+'\\'+ filename , path+'\\'+ filename.lower().replace(old , new) )
    

    但是,这将强制新文件名完全小写。如果要保留其余文件名的大小写,可以使用 re.subIGNORECASE 标志:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 2011-06-11
      • 1970-01-01
      • 2012-03-04
      • 2013-04-04
      相关资源
      最近更新 更多