import os import argparse import multiprocessing as mp def fn(para): file, url_base, data_dir = para url = url_base + file output_filename = file+".zip" output_path = os.path.join(data_dir, output_filename) unzip_path = os.path.join(data_dir, file) os.system(f"curl -X GET {url} -H accept: */* --output {output_path}") os.system(f"unzip {output_path} -d {unzip_path}") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--filename_file", type=str, default="./dataset/ATLAS_filename.txt") parser.add_argument("--url_base", type=str, default="https://www.dsimb.inserm.fr/ATLAS/api/ATLAS/analysis/") parser.add_argument("--output_dir", type=str, default="./dataset/ATLAS_test") args = parser.parse_args() num_processes = 48 os.makedirs(args.output_dir, exist_ok=True) with open(args.filename_file,'r+') as f: file_cont = f.read() file_list = file_cont.split("\n") para_list = [(file, args.url_base, args.output_dir) for file in file_list] with mp.Pool(num_processes) as pool: _ = pool.map(fn, para_list) print("finished") os.system(f"cp -rf {args.filename_file} {args.output_dir}")