samedi 22 février 2020

What is the point of checking same condition twice in if statement and assert statement?

In this code snippet, is there any reason checking the same condition twice in if statement and assert statement?

    if args.output:
        if os.path.isdir(args.output):
            assert os.path.isdir(args.output), args.output

If you want to see where this code came from, more codes are below here:

(It's from demo.py file from Facebook's Detectron2 Github source code. This is my first question in Stack overflow, so please let me know if this question is lacking some information, or need some correction.)

if args.input:
    if len(args.input) == 1:
        args.input = glob.glob(os.path.expanduser(args.input[0]))
        assert args.input, "The input path(s) was not found"
    for path in tqdm.tqdm(args.input, disable=not args.output):
        # use PIL, to be consistent with evaluation
        img = read_image(path, format="BGR")
        start_time = time.time()
        predictions, visualized_output = demo.run_on_image(img)
        logger.info(
            "{}: detected {} instances in {:.2f}s".format(
                path, len(predictions["instances"]), time.time() - start_time
            )
        )

        if args.output:
            if os.path.isdir(args.output):
                assert os.path.isdir(args.output), args.output
                out_filename = os.path.join(args.output, os.path.basename(path))
            else:
                assert len(args.input) == 1, "Please specify a directory with args.output"
                out_filename = args.output
            visualized_output.save(out_filename)
        else:
            cv2.namedWindow(WINDOW_NAME, cv2.WINDOW_NORMAL)
            cv2.imshow(WINDOW_NAME, visualized_output.get_image()[:, :, ::-1])
            if cv2.waitKey(0) == 27:
                break  # esc to quit

Aucun commentaire:

Enregistrer un commentaire