如何递归批量重命名网络共享目录中含冒号的文件为下划线
批量递归重命名共享目录中含冒号的文件
解决方案代码
方法1:使用os模块
import os def rename_files_with_colon(root_dir): # 递归遍历目标目录下所有文件 for dirpath, _, filenames in os.walk(root_dir): for filename in filenames: if ":" in filename: old_full_path = os.path.join(dirpath, filename) new_filename = filename.replace(":", "_") new_full_path = os.path.join(dirpath, new_filename) try: os.rename(old_full_path, new_full_path) print(f"已重命名: {old_full_path} -> {new_full_path}") except Exception as e: print(f"重命名失败 [{old_full_path}]: {str(e)}") # 替换为你的网络共享目录路径,比如 r"\\server\shared_folder" rename_files_with_colon(r"\\your_shared_server\target_directory")
方法2:使用pathlib(更简洁的路径处理)
from pathlib import Path def rename_files_with_colon(root_dir): root_path = Path(root_dir) # 递归匹配所有文件 for file in root_path.rglob("*"): if file.is_file() and ":" in file.name: new_name = file.name.replace(":", "_") new_path = file.parent / new_name try: file.rename(new_path) print(f"已重命名: {file} -> {new_path}") except Exception as e: print(f"重命名失败 [{file}]: {str(e)}") # 调用示例 rename_files_with_colon(r"\\your_shared_server\target_directory")
关键注意事项
- 备份优先:操作前建议先备份共享目录中的文件,避免意外损失
- 权限确认:确保你的账户对目标共享目录有写入权限,否则会触发权限错误
- 预检查:可以先注释掉重命名代码(
os.rename或file.rename),只打印待重命名路径,确认所有目标文件都被正确识别后再执行实际重命名 - 路径格式:网络共享目录路径在Windows下推荐使用原始字符串(前缀
r""),避免转义字符导致路径解析错误
关于编码处理的问题说明
你之前尝试的编码转换方案会导致路径出现额外转义字符,是因为编码后得到的是字节串而非字符串,打印时会显示转义符号。直接从文件名层面替换特殊字符,才是解决问题的根本方式。
内容的提问来源于stack exchange,提问作者Gavin Williams
相关产品推荐
相关产品推荐

