2017-07-24 94 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