我不能让argparse工作

时间:2014-03-03 22:11:46

标签: python arguments argparse

我想通过追加在parser.add_argument中添加参数但是当我运行它时会出现以下消息

Prueba.py: error: argument -c1/--col1: expected one argument

即使我尝试使用-h访问帮助,也会出现。

这是代码

import argparse

parser = argparse.ArgumentParser(description='This is a program that makes a comparison between two files')

parser.add_argument('-c1', '--col1', action = 'append', default = [1,2], help = "Numbers in the first column")
parser.add_argument('-c2', '--col2', action = 'append', default = [1,2], help = "Numbers in the second column")

parser.add_argument('-f1', '--file1', type=str, action = 'store', help="File 1 Path")
parser.add_argument('-f2', '--file2', type=str, action = 'store', help="File 2 Path")


parser.parse_args('--col1'.split(','))
parser.parse_args('--col2'.split(','))

args = parser.parse_args()

col1 = args.col1
col2 = args.col2
file1 = args.file1
file2 = args.file2

print file1
print file2
print col1
print col2

2 个答案:

答案 0 :(得分:0)

--col1--col2都需要相关的参数。因此,您将无效参数传递给parse_args

最重要的是,您使用split(',')是一个错误。当然你打算写split()。错误是良性的,因为代码代表了问题。但是只要你添加额外的参数,它就会崩溃。

将对parse_args()的三次通话替换为此单一通话:

args = parser.parse_args('--col1 1 --col2 2'.split())

这是一个简短的演示程序,用于演示工作append参数。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--arg', action='append')
print parser.parse_args('--arg foo --arg bar'.split())

<强>输出

Namespace(arg=['foo', 'bar'])

答案 1 :(得分:0)

如果删除行

,它将起作用
parser.parse_args('--col1'.split(','))
parser.parse_args('--col2'.split(','))

他们应该做什么呢?为什么要将固定字符串拆分为&#39;,&#39;哪些甚至不包含任何&#39;?#/ p>