以下是我用于类似目的的代码摘录:
```python
# 这里是一段代码摘录
```
该代码可供参考。
def parse_args(argv):
class SetAction(argparse.Action):
"""argparse.Action subclass to store distinct values"""
def __call__(self, parser, namespace, values, option_string=None):
try:
getattr(namespace,self.dest).update( values )
except AttributeError:
setattr(namespace,self.dest,set(values))
ap = argparse.ArgumentParser(
description = __doc__,
formatter_class = argparse.ArgumentDefaultsHelpFormatter,
)
ap.add_argument('--genes', '-g',
type = lambda v: v.split(','),
action = SetAction,
help = 'select by specified gene')
这与jcollado的回答类似,但有一些改进:可以指定多个选项,用逗号分隔,并且它们在所有选项中进行去重(通过set)。
例如:
snafu$ ./bin/ucsc-bed -g BRCA1,BRCA2,DMD,TNFA,BRCA2 -g BRCA1
Namespace(genes=set([u'BRCA1', u'BRCA2', u'DMD', u'TNFA']))
请注意,有两个-g参数。BRCA2在第一个参数中被指定了两次,但只出现了一次。BRCA1在第一个和第二个-g选项中都被指定了,但也只出现了一次。
set
,这样就可以去掉重复的部分。 - Katriel