我有一些像这样的代码:
#w = open("blabla.py", "w") is already called
w.write("Button(root, text = %s,command=%s).grid(row=%s,column=%s)\n" % textvalue,buttoncommand,str(rowvalue),str(columnvalue))
但是,如果我运行它,我会收到以下错误:
TypeError: not enough arguments for format string
有什么问题?
答案 0 :(得分:4)
将vars包含在一个元组中:
w.write("Button(root, text = %s,command=%s).grid(row=%s,column=%s)\n" % (textvalue,buttoncommand,str(rowvalue),str(columnvalue)))
或者使用更好的格式版本:
w.write("Button(root, text = {0},"
"command={1}).grid(row={2},"
"column={3})\n".format(textvalue,
buttoncommand,
str(rowvalue),
str(columnvalue)))
答案 1 :(得分:0)
您需要将格式参数放入元组(添加括号):
... % (textvalue,buttoncommand,str(rowvalue),str(columnvalue))
但格式化字符串的%
语法正在变得过时。试试这个:
"'{0}', '{1}', '{2}', '{3}', '{4}'".format(textvalue,buttoncommand,str(rowvalue),str(columnvalue))
答案 2 :(得分:0)
如果将多个参数传递给格式字符串,则需要将它们放在括号中:
w.write("Button(root, text = %s,command=%s).grid(row=%s,column=%s)\n" % (textvalue,buttoncommand,str(rowvalue),str(columnvalue)))
^ ^
您还可以查看新的格式语法:https://docs.python.org/2/library/string.html#format-examples