批量文件复制与检查脚本详解

文摘   2024-10-04 22:53   北京  

在数据处理和人工智能领域的日常工作中,我们常常需要将大量文件从一个目录复制到另一个目录。手动操作不仅费时费力,而且容易出错。为了提高效率并确保数据完整性,我们可以编写一个自动化脚本来完成这项任务。本文将详细介绍一个脚本,该脚本能够批量检查并复制文件,适用于数据集的迁移和备份。

脚本的主要功能是读取一个包含相对路径的文件列表,然后根据这些路径检查目标目录中的文件是否存在。如果不存在,脚本会自动从源目录中复制相应的文件到目标目录。该脚本的一个重要特点是它会自动创建目标目录中的缺失文件夹,确保文件能够正确存放。

1、导入模块: 

import osimport os.path as ospimport shutilfrom tqdm import tqdm

脚本首先导入了所需的模块,包括 os和 os.path(用于文件和路径操作)、shutil(用于文件复制)以及 tqdm(用于进度条显示)。

2、读取文件列表:

with open('files.txt', 'r') as f:data = f.readlines()data = [line.strip() for line in data]

这部分代码读取了一个名为 files.txt的文件,该文件包含了所有需要检查和复制的文件的相对路径。strip()函数用于去除每行末尾的换行符。

3、设置源路径和目标路径:

data_root = '/data/'dest_root = '/root/transfer/'

脚本定义了源路径和目标路径。源路径是指文件的原始存放位置,目标路径则是文件需要复制到的位置。

4、遍历文件列表并复制文件:  

for rel_path in tqdm(data):    dst_path = osp.join(dest_root, rel_path)if not osp.exists(dst_path):try:            src_path = osp.join(data_root, rel_path)            dir_path = osp.dirname(dst_path)if not osp.exists(dir_path):                os.makedirs(dir_path)            shutil.copy(src_path, dst_path)except:            print(src_path, ' is not found.')continue

这部分代码是脚本的核心。它使用 tqdm 模块来显示进度条,并遍历文件列表中的每个相对路径。对于每个路径,脚本首先检查目标路径是否存在:如果不存在,则尝试从源路径复制文件。如果目标路径中的目录不存在,脚本会自动创建这些目录。如果源路径中的文件不存在,脚本会打印错误信息并跳过该文件。

这个脚本非常适合在以下场景中使用:

1、数据集迁移:将数据集从一个服务器迁移到另一个服务器。

2、数据备份:定期备份重要数据文件到另一个目录或外部存储设备。

3、文件同步:确保两个目录中的文件保持同步。

脚本通过简单而有效的逻辑,实现了批量文件的检查和复制功能。它不仅提高了数据处理的效率,还确保了数据在迁移过程中的完整性。通过自动化这一过程,用户可以专注于更重要的任务,减少手动操作带来的错误风险。

如果喜欢这篇文章,请点下方在看,

后续推荐更多类似文章

日常运维文档
多做实验,少做自己!分享一些日常运维和学习文档,欢迎大家一起交流。
 最新文章