Jzl*_*325 5 python python-2.7 argparse
目前,我使用argparse来解析参数并将标志存储为布尔选项.然后我检查看哪个标志设置为true并执行该功能.Argparse解析一个输入文件,该文件被打开并作为参数传递给被调用函数.
所以:
parser.add_argument('input_data', action='store', help='some help')
parser.add_argument('outputname', action='store',default=None, help='some help')
parser.add_argument('--flag','-f', action='store_true', dest='flag', default=False, help='help!')
Run Code Online (Sandbox Code Playgroud)
我必须打开input_data,在调用flag函数之前从中读取一些信息.目前实现如下:
if args.flag == True:
array_out = flag(array_read_from_input)
if args.outputname == None:
name = 'Flag.tif'
Run Code Online (Sandbox Code Playgroud)
可以将argparse子类化以使action关键字调用函数.
是否可以解析input_data选项,执行一些处理,然后调用flag函数,而不必为每个参数嵌套if循环,例如,通过继承argparse的action参数?
是否可以解析 input_data 选项,执行一些处理,然后调用标志函数,而无需为每个参数嵌套 if 循环,例如,通过子类化 argparse 的操作参数?
根据你的问题;
class FooAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
<< some processing of values >>
array_out = flag(values)
setattr(namespace, self.dest, array_out)
parser = argparse.ArgumentParser()
parser.add_argument('input_data', action=FooAction, help='some help')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2076 次 |
| 最近记录: |