在for循环中使用argparse add_argument

时间:2015-07-13 18:21:16

标签: python python-3.x

我试图在for循环中使用parser.add_argument但是收到错误。以下是我的示例代码和错误。任何帮助表示赞赏。谢谢!

我在我的例子中使用了一个项目列表文件。它是一个普通文件,其中列出的项目如下:

item1
item2
item3

test.py包含以下代码

#!/usr/bin/python

import re
import os
import string
import argparse

parser = argparse.ArgumentParser()

itemlist = open("itemlist").read().splitlines()
for item in itemlist:
  print(item)
  parser.add_argument(item)

version=parser.parse_args()
for item in itemlist:
  print(getattr(version,item))

./test.py 1.00 2.00 3.00

运行脚本

我希望输出

1.00
2.00
3.00

运行程序时出错:

 parser.add_argument(item)
  File "/usr/local/lib/python3.4/argparse.py",
    if not args or len(args) == 1 and args[0][0] not in chars:
IndexError: string index out of range

如果我只有一个项目,这是有效的。如果我有多个项目,它不起作用。那是做错了什么的?

1 个答案:

答案 0 :(得分:1)

文件末尾有一个空行。

我测试了它并且工作正常(使用python 3.4.3)。在itemlist末尾添加一个空行后,它失败并显示该错误。

修改:我刚检查了argparse源代码,当读取空行时,args似乎持有[""]。所以,如果你在控制台中执行它:

>>> [""][0][0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range