批量删除文件名中的字符

8
我在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编程,但希望能够编写一个能达到上述结果的脚本。谢谢

请查看此问题 - 它可能很有用:https://dev59.com/dYDba4cB1Zd3GeqPIcX5 - Preet Sangha
4个回答

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

2
如果您遇到“系统找不到指定的文件”错误,则更改您的 os.chdir。请参见 https://stackoverflow.com/a/48947477/3154274。 - MagTun
path = r"C:\shared_data\results_anat\20211122_1322_OldMatching" for filename in os.listdir(path): new_filename = filename.replace('20211122_1322_', '') os.rename(os.path.join(path, filename), os.path.join(path, new_filename))``` - lahmania

3
这段代码可以递归地从目录中的所有文件名中删除任何特定字符或一组字符,并将它们替换为任何其他字符、字符组或不加字符。
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

我没有足够的声望来评论nicholas的解决方案,但是如果任何文件夹名称包含您要替换的字符,则该代码将中断。

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


0
import os
#to get directory path you are in now
os.getcwd()
#you will see you'r not at the same path of your files 
#you must change your path to folder having your files 
os.chdir('''/the_folder_path ''')
#then you will use this 
for filename in os.listdir('''/your_folder_path'''):
    os.rename(filename, filename.replace('what_you_need_to_replace', 'your_change'))

这个在 macOS 上可以工作,我认为在 Windows 上你需要在目录路径中使用 // 符号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接