在数据处理和人工智能领域的日常工作中,我们常常需要将大量文件从一个目录复制到另一个目录。手动操作不仅费时费力,而且容易出错。为了提高效率并确保数据完整性,我们可以编写一个自动化脚本来完成这项任务。本文将详细介绍一个脚本,该脚本能够批量检查并复制文件,适用于数据集的迁移和备份。
脚本的主要功能是读取一个包含相对路径的文件列表,然后根据这些路径检查目标目录中的文件是否存在。如果不存在,脚本会自动从源目录中复制相应的文件到目标目录。该脚本的一个重要特点是它会自动创建目标目录中的缺失文件夹,确保文件能够正确存放。
1、导入模块:
import os
import os.path as osp
import shutil
from 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、文件同步:确保两个目录中的文件保持同步。
脚本通过简单而有效的逻辑,实现了批量文件的检查和复制功能。它不仅提高了数据处理的效率,还确保了数据在迁移过程中的完整性。通过自动化这一过程,用户可以专注于更重要的任务,减少手动操作带来的错误风险。
如果喜欢这篇文章,请点下方在看,
后续推荐更多类似文章