2017-07-24 115 views
0

嗨,我试图从(test.jpeg,test1.jpeg,test2.jpeg等...)(People-000,People-001,People-002等等......)在python中重新命名文件

但我还没有找到一个很好的方法在网上任何地方做到这一点。 我有点新来python,但如果我想通了这将是非常有用的。

+1

https://stackoverflow.com/questions/2759067/rename-files-in-python 即使用os.rename(src,dst) – anugrah

+0

你有什么试过?显示代码。对于绝大多数问题,如果你没有包含显示你所尝试的代码,那么你的问题是不完整的,需要更多的工作。 – Jacobr365

+0

我相信这里已经有了答案。检查下面: Ankit

回答

1

如果你不介意的新旧名称的对应关系:

import os 
_src = "/path/to/directory/" 
_ext = ".jpeg" 
for i,filename in enumerate(os.listdir(_src)): 
    if filename.endswith(_ext): 
     os.rename(filename, _src+'People-' + str(i).zfill(3)+_ext) 

但如果它是结束旧的和新的文件名的数量对应,您可以使用正则表达式是非常重要的

import re 
import os 
_src = "/path/to/directory/" 
_ext = ".jpeg" 

endsWithNumber = re.compile(r'(\d+)'+(re.escape(_ext))+'$') 
for filename in os.listdir(_src): 
    m = endsWithNumber.search(filename) 
    if m: 
     os.rename(filename, _src+'People-' + str(m.group(1)).zfill(3)+_ext) 
    else: 
     os.rename(filename, _src+'People-' + str(0).zfill(3)+_ext) 

使用正则表达式而不是字符串索引的优点是,文件名长度无关紧要。

+0

谢谢,这是我实际可以理解的序列编号的第一个版本。 – Asori12