以递增顺序重命名多个具有相同名称的不同扩展名的文件



我有多个文件夹,其中的文件名如下:

1500001.jpg
1500001.xml
1600002.jpg
1600002.xml
9876543.jpg
9876543.xml

正如你所看到的,我有一个jpg文件和它对应的xml文件,文件名相同。我想重命名所有这些文件如下:

ID_0001.jpg (1500001.jpg converted to ID_0001.jpg)
ID_0001.xml (1500001.xml converted to ID_0001.xml)
ID_0002.jpg (1600002.jpg converted to ID_0002.jpg)
ID_0002.xml (1600002.xml converted to ID_0002.xml
ID_0003.jpg (9876543.jpg converted to ID_0003.jpg)
ID_0003.xml (9876543.xml converted to ID_0003.xml)

我是Python的新手,已经编写了一些代码来重命名具有不同扩展名的文件,但无法将其扩展为按递增顺序为相应文件保留相同的文件名,如ID_0001.jpg、ID_0001.xml等。

import os
_src = "path/to/directory"
_ext_jpg = ".jpg"
_ext_xml = ".xml"
for i,filename in enumerate(os.listdir(_src)):
if filename.endswith(_ext_jpg):
os.rename(filename, _src+'ID_' + str(i)+_ext_jpg)
else:
os.rename(filename, _src+'ID_' + str(i)+_ext_xml)

使用此代码,所有文件(如ID_0001.jpg、ID_002.xml、ID_003.jpg和ID_004.xml(都会发生增量,实际上它应该像ID_0001..jpg、ID_0001.xml、ID/0002.jpg、ID _0002.xml等。

获得文件名后,重命名xmljpg文件:

import os
_src = "path/to/directory"
_ext_jpg = ".jpg"
_ext_xml = ".xml"
for i,filename in enumerate(os.listdir(_src)):
if filename.endswith(_ext_jpg):
os.rename(filename, _src+'ID_' + str(i)+_ext_jpg)
os.rename(filename[:-4]+_ext_xml, _src+'ID_' + str(i)+_ext_xml)

使用glob

例如:

import os
import glob
_src = "path/to/directory"
for i,filename in enumerate(glob.glob("{}*.jpg".format(_src))):
file = os.path.basename(filename)
f, ext = os.path.splitext(file)
os.rename(filename, os.path.join(_src, 'ID_' + str(i)+ext))   #Rename .jpg
os.rename(os.path.join(_src, "{}.xml".format(f) , os.path.join(_src, 'ID_' + str(i)+".xml"))  #Rename .xml

最新更新