有人能说出为什么这不起作用吗?
我将文件1中的一些参数提供给文件2中的函数(myfile.py -i inpufile -n 3等)。 -n 3表示创建3次类似CS_TH,CS_Z4等的东西并将其附加到列表中(在文件2中cs_id = [])。
File1..snip .. 的
for opt, arg in opts:
if opt in ("-h", "--help"):
func.usage()
sys.exit()
elif opt in '-d':
global _debug
_debug = 1
elif opt in ("-i", "--ifile"):
global ifile
ifile = arg
elif opt in ("-o", "--ofile"):
global ofile
ofile = arg
elif opt in ("-n", "--NumberOfInstances"):
global instances
instances = arg
func.unzip(ifile, instances)
文件2 ..剪辑..
def unzip(ifile, instances,):
global cs_id
newinstance = ifile
nos = instances
i = 0
cs_id = []
for i in nos:
cs_id.append('CS_' + id_generator())
i += 1
print ', '.join(cs_id)
我收到了这个错误
i += 1
TypeError: cannot concatenate 'str' and 'int' objects
我在网上找到了一些关于整数增量的信息,但我不明白这里的问题是什么。有一个列表cs_id = []必须填充与参数-n一样多(例如-n 3)。
我希望我以正确的方式解释。
亲切的问候。
答案 0 :(得分:2)
您为循环元素使用相同的变量名,因此循环i
内部是一个字符串,而不是在其上方声明的计数器。然后,作为一个String并且知道python不喜欢你连接不属于同一类型的东西,你会触发TypeError
答案 1 :(得分:0)
for i in nos
为i
分配一个字符串值。你进一步(错误地)使用了计数变量i
,期望它仍然是int
,但事实并非如此。因此问题。试试这个:
for no in nos:
答案 2 :(得分:0)
你犯了两个错误:
使用相同的变量i
来循环变量nos
并计算其长度
尝试连接字符串(nos
的当前元素)和循环计数器
只需将for i in nos:
替换为for _ in nos:
,因为它是您案例中的静默变量。这样,您将循环nos
变量。
答案 3 :(得分:0)
你可能会遇到问题:
elif opt in ("-n", "--NumberOfInstances"):
global instances
instances = arg
来自命令行的任何内容都是字符串,因此arg
是一个字符串。您可能希望将其转换为带有int()的整数:
instances = int(arg)
然后你需要修复你的循环:
def unzip(ifile, instances,):
global cs_id
newinstance = ifile
cs_id = []
for i in xrange(instances):
cs_id.append('CS_' + id_generator())
print ', '.join(cs_id)
如果您使用的是Python 3,请使用range()
代替xrange()
。