背景简述:
(1)获取局域网共享目录下,所有文件;
(2)将文件进行更名操作;
文件名格式:日期_通道号_电话号码.wav或日期_电话号码_通道号.wav.
(3)重命名保存要求
<1> 日期保持不变;
<2>通道号倒置(亦可更换成其他的要求)
<3>电话号码随机11位(不做校验)
下图,是测试文件,文件存在局域网共享目录下,文件名称有特殊字符下划线“_”标识。
import os
import random
import re
# 1. 获取局域网共享文件夹及文件夹里的所有文件
shared_folder_path = r'\\0501008637\test'#替换成自己的贡献文件路径
# 遍历文件夹中的所有文件
file_paths = []
for foldername, subfolders, filenames in os.walk(shared_folder_path):
for filename in filenames:
file_path = os.path.join(foldername, filename)
file_paths.append(file_path)
# 2. 提取每个文件的文件名
file_names = [os.path.basename(file_path) for file_path in file_paths]
# # 打印所有文件的文件名
# for file_name in file_names:
# print(file_name)
'''
员工通道号匹配说明,现测试针对test下,只有8006和8027
'''
def change8006():
return "6008"
def change8027():
return "7208"
# def case3():
# return "This is case 3"
def default_case():
return "This is the default case"
# 定义一个字典,将case的值作为键,相应的函数作为值
switch_dict = {
8006: change8006,
8027: change8027
}
# 定义一个函数,接受case作为参数,并调用相应的函数
def switch(case):
return switch_dict.get(case, default_case)()
# 3. 重新命名文件名,并另存至原文件夹下
for i, file_path in enumerate(file_paths):
original_file_name = file_names[i]
# 使用正则表达式提取文件名中的指定部分
pattern = r'(\d+)_(\d+)_([^_]+)?\.wav'
match = re.match(pattern, os.path.basename(original_file_name))
if match:
# 提取分段信息
segment1 = match.group(1)
segment2 = match.group(2)
segment3 = match.group(3) if match.group(3) else 'null'
print("通话时间:", segment1)
# # 解析通话时间字符串为datetime对象
# segment1 = datetime.strptime(segment1, '%Y%m%d%H%M%S')
# # 将通话时间格式化为'YYYY-MM-DD HH:MM:SS'的格式
# formatted_call_time = segment1.strftime('%Y-%m-%d %H:%M:%S')
# print(formatted_call_time)
print("通道号:", segment2)
# segment2 = switch(int(segment2))
print("客户号:", segment3)
segment3 = ''.join(random.choice('0123456789') for _ in range(11))
else:
print("文件名格式不匹配")
# 自定义命名规则,这里使用文件在列表中的索引作为新的文件名前缀
new_file_name = f"{segment1}_{segment2}_{segment3}.wav"
new_file_path = os.path.join(os.path.dirname(file_path), new_file_name)
print(new_file_name)
print(new_file_path)
# 重命名文件
# os.rename(file_path, new_file_path)
# 复制文件到新文件夹
with open(file_path, 'rb') as source_file, open(new_file_path, 'wb') as destination_file:
destination_file.write(source_file.read())
print('----- '*5)
print("文件重命名完成,新文件名已另存至原文件夹下。")