You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用字典将文件从一个文件夹复制到多个目标文件夹

使用字典批量复制文件到目标文件夹的方法

当然可以,以下是两种常用的实现方式,覆盖Python和Shell脚本场景:

Python 实现

利用标准库shutil和os即可完成,逻辑清晰且跨平台:

import shutil
import os

# 替换成你的文件路径字典
file_mapping = {
    "/path/to/source/file1.txt": "/path/to/target/folder1",
    "/path/to/source/file2.png": "/path/to/target/folder2"
}

for src_file, dest_dir in file_mapping.items():
    # 确保目标文件夹存在,不存在则递归创建
    os.makedirs(dest_dir, exist_ok=True)
    # 拼接目标文件完整路径(保留原文件名)
    dest_file = os.path.join(dest_dir, os.path.basename(src_file))
    # 复制文件并保留元数据(如创建时间、权限)
    shutil.copy2(src_file, dest_file)

关键说明

  • shutil.copy2相比shutil.copy会保留文件元数据,更适合备份场景
  • os.makedirs的exist_ok=True参数避免因文件夹已存在抛出异常
  • 可额外添加if os.path.exists(src_file):判断,跳过不存在的源文件

Bash Shell 脚本实现

适用于Linux/macOS环境,利用bash关联数组实现:

#!/bin/bash

# 定义文件路径映射的关联数组
declare -A file_mapping=(
    ["/path/to/source/file1.txt"]="/path/to/target/folder1"
    ["/path/to/source/file2.png"]="/path/to/target/folder2"
)

for src_file in "${!file_mapping[@]}"; do
    dest_dir="${file_mapping[$src_file]}"
    # 递归创建目标文件夹,忽略已存在的目录
    mkdir -p "$dest_dir"
    # 复制文件并保留属性
    cp -p "$src_file" "$dest_dir/"
done

关键说明

  • declare -A用于定义bash关联数组,需要bash 4.0及以上版本支持
  • mkdir -p确保层级目录全部创建
  • cp -p保留文件的权限、时间戳等属性

通用注意事项

  1. 确保对源文件有读取权限,对目标文件夹有写入权限
  2. 若源文件不存在,两种实现都会抛出错误,可自行添加存在性判断跳过
  3. 大文件复制时,Python可考虑shutil.copyfileobj分块处理,Shell可使用rsync提升效率

内容的提问来源于stack exchange,提问作者Views From The Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:45:59