批量删除文件名中的字符

时间:2014-06-19 01:34:25

标签: python batch-file

我在Windows资源管理器中有3个主文件夹,其中包含命名为ALB_01_00000_intsect_d.kml或Baxters_Creek_AL_intsect_d.kml的文件。即使名字改变了我想要从所有这些文件中删除的一致的东西是“_intsect_d”。想为每个文件夹中的所有文件执行此操作。这些文件的扩展名为.kml。根据上面的例子,我期望的结果是ALB_01_00000.kml,另一个是 Baxters_Creek_AL.kml。不太了解python中的编程,但是想帮助编写一个可以实现上述结果的脚本。感谢

3 个答案:

答案 0 :(得分:7)

import os
for filename in os.listdir('dirname'):
    os.rename(filename, filename.replace('_intsect_d', ''))

答案 1 :(得分:1)

此代码可用于从目录中的所有文件名中递归删除任何特定字符或字符集,并将其替换为任何其他字符,字符集或无字符。

import os

paths = (os.path.join(root, filename)
        for root, _, filenames in os.walk('C:\FolderName')
        for filename in filenames)

for path in paths:
    # the '#' in the example below will be replaced by the '-' in the filenames in the directory
    newname = path.replace('#', '-')
    if newname != path:
        os.rename(path, newname)

答案 2 :(得分:0)

我没有足够的声誉来评论尼古拉斯的解决方案,但如果任何文件夹名称包含您要替换的字符,则代码会中断。

例如,如果您想要newname = path.replace('_', ''),但您的路径看起来像/path/to/data_dir/control_43.csv,那么您将获得OSError: [Errno 2] No such file or directory