在 python 中按顺序重命名文件
Rename files sequentially in python
您好,我正在尝试重命名目录中的文件(test.jpeg、test1.jpeg、test2.jpeg 等...)(People-000、People-001、 People-002 等...)
但我还没有找到在网上任何地方执行此操作的好方法。
我对 python 有点陌生,但如果我弄明白了,那将非常有用。
如果您不介意新旧名称对应:
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)
使用正则表达式代替字符串索引的优点是文件名长度无关紧要。
您好,我正在尝试重命名目录中的文件(test.jpeg、test1.jpeg、test2.jpeg 等...)(People-000、People-001、 People-002 等...)
但我还没有找到在网上任何地方执行此操作的好方法。 我对 python 有点陌生,但如果我弄明白了,那将非常有用。
如果您不介意新旧名称对应:
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)
使用正则表达式代替字符串索引的优点是文件名长度无关紧要。