以下是一个用于给文件添加前缀的 Python 脚本,它能够批量为指定目录下的所有文件添加自定义前缀。脚本包含错误处理功能,可以处理文件重命名过程中可能出现的各种异常情况。
import os
import argparse
from pathlib import Path
def add_prefix_to_files(directory, prefix, recursive=False, dry_run=False):
"""
为指定目录中的所有文件添加前缀
参数:
directory (str): 要处理的目录路径
prefix (str): 要添加的前缀字符串
recursive (bool): 是否递归处理子目录
dry_run (bool): 是否进行试运行(不实际修改文件)
"""
try:
# 确保目录存在
if not os.path.exists(directory):
raise FileNotFoundError(f"指定的目录不存在: {directory}")
if not os.path.isdir(directory):
raise NotADirectoryError(f"指定的路径不是一个目录: {directory}")
processed_files = 0
skipped_files = 0
# 获取所有要处理的文件
if recursive:
# 递归处理所有子目录
files = [os.path.join(root, name)
for root, dirs, files in os.walk(directory)
for name in files]
else:
# 只处理当前目录
files = [os.path.join(directory, name)
for name in os.listdir(directory)
if os.path.isfile(os.path.join(directory, name))]
# 处理每个文件
for file_path in files:
try:
# 获取文件的目录和原始文件名
file_dir = os.path.dirname(file_path)
original_name = os.path.basename(file_path)
# 构建新的文件名
new_name = prefix + original_name
# 构建新的文件路径
new_file_path = os.path.join(file_dir, new_name)
# 如果新文件名已经存在,则跳过
if os.path.exists(new_file_path):
print(f"跳过: {file_path} (新文件名已存在)")
skipped_files += 1
continue
# 执行重命名操作(或仅打印)
if dry_run:
print(f"将 {original_name} 重命名为 {new_name}")
else:
os.rename(file_path, new_file_path)
print(f"已重命名: {original_name} -> {new_name}")
processed_files += 1
except Exception as e:
print(f"处理文件 {file_path} 时出错: {e}")
print(f"\n处理完成!")
print(f"成功处理的文件: {processed_files}")
print(f"跳过的文件: {skipped_files}")
except Exception as e:
print(f"操作失败: {e}")
if __name__ == "__main__":
# 创建命令行参数解析器
parser = argparse.ArgumentParser(description='为目录中的文件添加前缀')
# 添加必需的参数
parser.add_argument('-d', '--directory', required=True,
help='要处理的目录路径')
parser.add_argument('-p', '--prefix', required=True,
help='要添加的前缀字符串')
# 添加可选参数
parser.add_argument('-r', '--recursive', action='store_true',
help='递归处理子目录')
parser.add_argument('-n', '--dry-run', action='store_true',
help='试运行,不实际修改文件')
# 解析命令行参数
args = parser.parse_args()
# 调用函数执行文件重命名
add_prefix_to_files(args.directory, args.prefix, args.recursive, args.dry_run)
使用说明:
- 运行前请确保已安装 Python 3.6 或更高版本
- 脚本支持以下命令行参数:
-d/--directory
:必需,指定要处理的目录路径-p/--prefix
:必需,指定要添加的前缀字符串-r/--recursive
:可选,递归处理子目录-n/--dry-run
:可选,试运行(不实际修改文件)
例如,要为当前目录下的所有文件添加前缀 “backup_”,可以运行:
python add_prefix_to_files.py -d . -p "backup_"
如需先查看操作效果而不实际修改文件,可以添加 --dry-run
参数:
python add_prefix_to_files.py -d . -p "backup_" --dry-run
如果需要递归处理所有子目录中的文件,可以添加 --recursive
参数:
python add_prefix_to_files.py -d . -p "backup_" --recursive