使用python替换目录中的文件名前缀

时间:2019-04-23 18:31:43

标签: python-2.7

如何更改目录中的文件名前缀。我需要将文件名前缀“ Mohammed”中的空格替换为“ Mohammed”。

目录:

C:\Mohammad_eng\Mohammad _eng-1.txt
C:\Mohammad_eng\Mohammad _eng-1.wav
C:\Mohammad_eng\Mohammad _eng-2.txt
C:\Mohammad_eng\Mohammad _eng-2.wav
C:\Mohammad_eng\Mohammad _eng-3.txt
C:\Mohammad_eng\Mohammad _eng-3.wav
C:\Mohammad_eng\Mohammad _eng-4.txt
C:\Mohammad_eng\Mohammad _eng-4.wav
C:\Mohammad_eng\Mohammad _eng-5.txt
C:\Mohammad_eng\Mohammad _eng-5.wav
C:\Mohammad_eng\Mohammad _eng-6.txt
C:\Mohammad_eng\Mohammad _eng-6.wav
C:\Mohammad_eng\Mohammad _eng-7.txt
C:\Mohammad_eng\Mohammad _eng-7.wav
C:\Mohammad_eng\Mohammad _eng-8.txt
C:\Mohammad_eng\Mohammad _eng-8.wav
C:\Mohammad_eng\Mohammad _eng-9.txt
C:\Mohammad_eng\Mohammad _eng-9.wav
C:\Mohammad_eng\Mohammad _eng-10.txt
C:\Mohammad_eng\Mohammad _eng-10.wav

我需要将它们更改为

C:\Mohammad_eng\Mohammad_eng-1.txt
C:\Mohammad_eng\Mohammad_eng-1.wav
C:\Mohammad_eng\Mohammad_eng-2.txt
C:\Mohammad_eng\Mohammad_eng-2.wav
C:\Mohammad_eng\Mohammad_eng-3.txt
C:\Mohammad_eng\Mohammad_eng-3.wav
C:\Mohammad_eng\Mohammad_eng-4.txt
C:\Mohammad_eng\Mohammad_eng-4.wav
C:\Mohammad_eng\Mohammad_eng-5.txt
C:\Mohammad_eng\Mohammad_eng-5.wav
C:\Mohammad_eng\Mohammad_eng-6.txt
C:\Mohammad_eng\Mohammad_eng-6.wav
C:\Mohammad_eng\Mohammad_eng-7.txt
C:\Mohammad_eng\Mohammad_eng-7.wav
C:\Mohammad_eng\Mohammad_eng-8.txt
C:\Mohammad_eng\Mohammad_eng-8.wav
C:\Mohammad_eng\Mohammad_eng-9.txt
C:\Mohammad_eng\Mohammad_eng-9.wav
C:\Mohammad_eng\Mohammad_eng-10.txt
C:\Mohammad_eng\Mohammad_eng-10.wav

如何实现? 注意:我是python脚本的新手。

2 个答案:

答案 0 :(得分:1)

请参见How to rename a file using Python

# call this script from the respective folder
import os
import re

for filename in os.listdir('.'):
    match = re.match(r'Mohammad (.*)', filename)
    if match:
        new_filename = 'Mohammad' + match.group(1)
        os.rename(filename, new_filename)

这将遍历所有文件名和目录名称,并检查名称是否与指定的模式匹配。如果是这样,它将重命名文件,并删除空格。

答案 1 :(得分:1)

请使用以下经过测试和验证的文件,它将起作用。

import glob, os


print("File rename Sample- rename()")


def replace(dir, pattern, titlePattern, replaceFromStr, replaceToStr):
    for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
        title, ext = os.path.splitext(os.path.basename(pathAndFilename))
        os.rename(pathAndFilename,
                  os.path.join(dir, titlePattern % title.replace(replaceFromStr, replaceToStr) + ext))


replace(r'C:\Mohammad_eng', r'*.wav', r'%s', "Mohammad ", "Mohammad")
replace(r'C:\Mohammad_eng', r'*.txt', r'%s', "Mohammad ", "Mohammad")