123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/usr/bin/env python
- # Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- import argparse
- import os
- import os.path as osp
- import shutil
- from glob import glob
- from tqdm import tqdm
- def get_subdir_name(src_path):
- basename = osp.basename(src_path)
- subdir_name, _ = osp.splitext(basename)
- return subdir_name
- def parse_args():
- parser = argparse.ArgumentParser()
- parser.add_argument(
- "--mode",
- default='copy',
- type=str,
- choices=['copy', 'link'],
- help="Copy or link images.")
- parser.add_argument(
- "--globs",
- nargs='+',
- type=str,
- help="Glob patterns used to find the images to be copied.")
- parser.add_argument(
- "--tags", nargs='+', type=str, help="Tags of each source directory.")
- parser.add_argument(
- "--save_dir",
- default='./',
- type=str,
- help="Path of directory to save collected results.")
- return parser.parse_args()
- if __name__ == '__main__':
- args = parse_args()
- if len(args.globs) != len(args.tags):
- raise ValueError(
- "The number of globs does not match the number of tags!")
- for pat, tag in zip(args.globs, args.tags):
- im_paths = glob(pat)
- print(f"Glob: {pat}\tTag: {tag}")
- for p in tqdm(im_paths):
- subdir_name = get_subdir_name(p)
- ext = osp.splitext(p)[1]
- subdir_path = osp.join(args.save_dir, subdir_name)
- subdir_path = osp.abspath(osp.normpath(subdir_path))
- if not osp.exists(subdir_path):
- os.makedirs(subdir_path)
- if args.mode == 'copy':
- shutil.copyfile(p, osp.join(subdir_path, tag + ext))
- elif args.mode == 'link':
- os.symlink(p, osp.join(subdir_path, tag + ext))
|