Search code examples
pythonargparse

Use an ArgumentParser argument as a default value of another argument


I would like to set an ArgumentParser argument value as the default value of another argument in the same parser.

Desired behavior:

parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormater)

parser.add_argument('-p', '--pin_file_path', help = "the directory of the given pin file", default=os.getcwd())
parser.add_argument('-o', '--other', help="", default=**pin_file_path!**)

Solution

  • parse_known_args parse the argument and send it to another argument.

    pin_file_path= None
    parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormater)
    parser.add_argument('-p', '--pin_file_path', help = "the directory of the given pin file", default = os.getcwd())
    args, remaining = parser.parse_known_args()
    parser.add_argument('--option2', default=args.pin_file_path)
    args = parser.parse_args()