Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重命名文件夹中的重复文件_Python_File Rename - Fatal编程技术网

Python 重命名文件夹中的重复文件

Python 重命名文件夹中的重复文件,python,file-rename,Python,File Rename,我正在重命名我的许多通话文件。这些文件保存为: 020171707p+917348809123.m4a 02016p+917348809123.m4a 020171707p+918658644125.m4a 020171707p+913676876817.m4a 我使用正则表达式只显示+号后面的数字。 但是我得到一个错误,因为两个文件不能有相同的名称。如何修改代码以使两个新文件(名称略有不同)保留在同一文件夹中 这是我的密码: import re import os path="D:\\docu

我正在重命名我的许多通话文件。这些文件保存为:

020171707p+917348809123.m4a

02016p+917348809123.m4a

020171707p+918658644125.m4a

020171707p+913676876817.m4a

我使用正则表达式只显示+号后面的数字。 但是我得到一个错误,因为两个文件不能有相同的名称。如何修改代码以使两个新文件(名称略有不同)保留在同一文件夹中

这是我的密码:

import re
import os
path="D:\\docu\s\mjay\docu\\acr"
DIR=os.chdir(path)
newstr=".m4a"
for filename in os.listdir(path):
   match=re.search("p\+(\d+)",filename)
   if match==None:
     continue
   newfilename=match.group(1)+newstr
   os.rename(filename,newfilename)
这里有一个简单的解决方法

import os
count = 1
path = "D:\\docu\s\mjay\docu\\acr\\"

for filename in os.listdir(path):   
    try:
        f_name = filename.split("+")[1]
        f_name = f_name.split(".")[0]+"."+f_name.split(".")[1]
        os.rename(path+filename,path+f_name)
        count +=1
    except:
        f_name = filename.split("+")[1]
        f_name = f_name.split(".")[0]+str(count)+"."+f_name.split(".")[1]
        os.rename(path+filename,path+f_name)
        count+=1

将有效的整数后缀附加到找到的任何重复项。