我试图在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
如果我只有一个项目,这是有效的。如果我有多个项目,它不起作用。那是做错了什么的?
答案 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