Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

. (dot) in argparse argument and variable name

Is it possible to have an argument parser like this?

import argparse
parser.add_argument('query2target.bam', help='A bam file containing contigs from \'query\' aligned to contigs in \'target\'')
args = parser.parse_args()
q2t = args.query2target.bam

I want the parser name to be 'query2target.bam' but then when I go to name a variable after it, q2t = args.query2target.bam it thinks that the extension is a function method. How do I solve this without renaming the argument?

like image 854
E.Cross Avatar asked Dec 06 '25 13:12

E.Cross


2 Answers

Never mind my previous answer. There actually is a clean solution to this problem; writing a custom action for the ArgumentParser:

import argparse

class Q2TAction(argparse.Action):
    def __call__(self, parser, namespace, values, option_string):
        self.query2target = values

parser = argparse.ArgumentParser()
q2taction = parser.add_argument("query2target.bam", action=Q2TAction)
parser.parse_args()

print(q2taction.query2target)
like image 89
Fred Foo Avatar answered Dec 08 '25 22:12

Fred Foo


Use the dest parameter.

parser.add_argument('query2target.bam', dest='query2target', help="...")
args = parser.parse_args()
q2t = args.query2target

http://docs.python.org/dev/library/argparse.html

like image 43
hcalves Avatar answered Dec 08 '25 22:12

hcalves