代码
import os
import json
record_file = 'rename_record.json'
def get_current_count(prefix):
"""
获取当前计数器的值。
该函数用于读取记录文件中特定前缀的计数器值,如果不存在,则返回0。
:param prefix: 文件名前缀
:return: 计数器值
"""
if os.path.exists(record_file):
with open(record_file, 'r') as f:
data = json.load(f)
return data.get(prefix, 0)
return 0
def update_current_count(prefix, count):
"""
更新当前计数器的值。
该函数用于将特定前缀的计数器值更新到记录文件中。如果记录文件不存在,则创建新文件。
:param prefix: 文件名前缀
:param count: 新的计数器值
"""
if os.path.exists(record_file):
with open(record_file, 'r') as f:
data = json.load(f)
else:
data = {}
data[prefix] = count
with open(record_file, 'w') as f:
json.dump(data, f)
def rename_files(directory, prefix, extensions):
"""
重命名指定目录下的文件。
该函数根据指定的前缀和文件扩展名,对目录下的文件进行重命名。重命名规则为前缀-五位数字后缀,数字从记录文件中读取并更新。
:param directory: 需要重命名文件的目录
:param prefix: 文件名前缀
:param extensions: 需要重命名的文件扩展名列表
"""
# 列出目录下所有文件,并筛选出符合指定扩展名的文件
files = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))]
current_count = get_current_count(prefix)
for file in files:
ext = os.path.splitext(file)[1]
if ext.lower() in extensions:
current_count += 1
# 根据前缀和计数器生成新文件名
new_name = f"{prefix}{current_count:05d}{ext}" if prefix else f"{current_count:05d}{ext}"
old_path = os.path.join(directory, file)
new_path = os.path.join(directory, new_name)
os.rename(old_path, new_path)
print(f"重命名: {file} -> {new_name}")
# 更新记录文件中的计数器值
update_current_count(prefix, current_count)
# 指定需要重命名文件的目录、文件扩展名
directory_path = r"E:\python-tools\流萤"
prefix_name = 'test-' # 前缀可为任意字符串
extensions_map = ['.txt', '.pdf', '.jpg']
rename_files(directory_path, prefix_name, extensions_map)
评论区