批量重命名代码

本文最新更新于 2025/02/14 晚上

运行示例

1
python batch-rename.py -i A:/script/new -o new1 -n test -p back -f 1
BASH
  • -i :图片文件夹命名
  • -o :输出文件夹名称
  • -n :图片基础名称,默认为“图片”
  • -p :后缀位置,可选front/back
  • -f :序号因子

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import os
import re
import argparse

def get_args():
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--image_directory', type=str, default='.\img')
parser.add_argument('-o', '--out_image_directory', type=str, default='img_new')
parser.add_argument('-n', '--name', type=str, default='图片')
parser.add_argument('-p', '--position', type=str, default='front')
parser.add_argument('-f', '--factor', type=float, default=1)
parser.add_argument('-l', '--link_symbol', type=str, default='_')
# 添加其他命令行参数
return parser.parse_args()

# 自定义排序函数:提取文件名中的数字并按数字大小排序
def extract_number(filename):
match = re.search(r'\d+', filename)
if match:
return int(match.group())
return 0

def main():
# 获取命令行参数
args = get_args()
image_directory = args.image_directory
out_image_directory = args.out_image_directory
name = args.name
position = args.position
factor = args.factor
link_symbol = args.link_symbol

# 获取文件夹路径
ul_directory = '/'.join(image_directory.split('/')[:-1])
new_out_image_directory = f'{ul_directory}/{out_image_directory}'
if not os.path.exists(new_out_image_directory):
os.makedirs(new_out_image_directory)

# 获取img文件夹内的所有文件
files = os.listdir(image_directory)

# 按照文件名中的数字排序
files_sorted = sorted(files, key=extract_number)

new_name = '图片'
# 遍历文件并重命名
for index, filename in enumerate(files_sorted):
if position == 'front':
new_name = f'{name}{link_symbol}{int(index *factor)}.jpg'
if position == 'back':
new_name = f'{int(index *factor)}{link_symbol}{name}.jpg'
else:
new_name = f'{name}{link_symbol}{int(index *factor)}.jpg' # 你可以根据需要修改文件名格式

# 获取文件的完整路径
old_file = os.path.join(image_directory, filename)
new_file = os.path.join(new_out_image_directory, new_name)

# 重命名文件
os.rename(old_file, new_file)
print(f'Renamed: {filename} -> {new_name}')

# 删除原文件夹
try:
os.rmdir(image_directory)
except OSError as e:
print(f"Error: {e.strerror}")

print('All files have been renamed.')

if __name__ == '__main__':
main()
PYTHON

完成


批量重命名代码
http://example.com/2025/02/14/047 批量重命名代码/
作者
DB
发布于
2025年2月14日
许可协议