python TypeError格式字符串的参数不足
尝试使用python结构更新文件python TypeError格式字符串的参数不足,python,regex,sed,fabric,Python,Regex,Sed,Fabric,尝试使用python结构更新文件 run('sed -i s/jahil/%s/g /etc/nginx/sites-enabled/%s' % (account)) 或 错误: TypeError: not enough arguments for format string 有什么想法吗?非常感谢 您的格式字符串中有两个%s,因此您正在构建的字符串预期会得到两个字符串参数 除非accounts是由两个字符串组成的元组,否则您将收到此消息 你应该有这样的东西: % (account,
run('sed -i s/jahil/%s/g /etc/nginx/sites-enabled/%s' % (account))
或
错误:
TypeError: not enough arguments for format string
有什么想法吗?非常感谢 您的格式字符串中有两个%s
,因此您正在构建的字符串预期会得到两个字符串
参数
除非accounts
是由两个字符串组成的元组,否则您将收到此消息
你应该有这样的东西:
% (account, something_else)
如果这两个字符串都需要是account
,那么%(account,account)
就可以了。您的格式字符串中有两个%s
,因此您正在构建的字符串预期会得到两个string
参数
除非accounts
是由两个字符串组成的元组,否则您将收到此消息
你应该有这样的东西:
% (account, something_else)
如果这两个字符串都需要是
account
,那么%(account,account)
就可以了。如错误所述,您所说的参数数量与您提供的参数数量不匹配。自然错误,因为您希望它们相同:
run('sed -i "s/jahil/%s/g" /etc/nginx/sites-enabled/%s' % (account, account))
正如错误所说,您所说的参数数量与您提供的参数数量不匹配。自然错误,因为您希望它们相同:
run('sed -i "s/jahil/%s/g" /etc/nginx/sites-enabled/%s' % (account, account))
错误告诉您问题所在:字符串中有两个
%s
占位符,但只有一个值。我假设你想在两个地方使用相同的值。在这种情况下:
run('sed -i s/jahil/%s/g /etc/nginx/sites-enabled/%s' % (account, account))
或者,等效地,使用字典以便我们可以使用命名占位符:
run('sed -i s/jahil/%(a)s/g /etc/nginx/sites-enabled/%(a)s' % {"a": account})
完全用Python进行这种字符串替换是很容易的;你可以考虑那样做,而不是脱壳。 错误告诉你问题:你的字符串中有两个<>代码> %s//>占位符,但只有一个值。我假设你想在两个地方使用相同的值。在这种情况下:
run('sed -i s/jahil/%s/g /etc/nginx/sites-enabled/%s' % (account, account))
或者,等效地,使用字典以便我们可以使用命名占位符:
run('sed -i s/jahil/%(a)s/g /etc/nginx/sites-enabled/%(a)s' % {"a": account})
完全用Python进行这种字符串替换是很容易的;你可以考虑那样做,而不是脱壳。注意<代码> %<代码>已经过时了。如果可以,请将您的代码更新为字符串对象的
.format()
方法。@SimeonVisser实际上,当v3问世时,有人说要去掉%-格式设置
,但后来我了解到,%-格式设置
暂时会继续存在。@Levon:在政治公众人物中提到过吗?我知道他们在Unicode文本前面重新引入了“u”,以使移植更容易。@SimeonVisser看一下这个答案底部的注释,它与Python 3.2发行说明有关。在那之前,我还以为%
-格式在不久的将来就要过时了future@Levon:谢谢,我不知道,我以为它很快就会被移除。简短的结论是,%
不会很快被删除,但建议将.format()
用于新代码(基于)。请注意,%
正在变得过时。如果可以,请将您的代码更新为字符串对象的.format()
方法。@SimeonVisser实际上,当v3问世时,有人说要去掉%-格式设置
,但后来我了解到,%-格式设置
暂时会继续存在。@Levon:在政治公众人物中提到过吗?我知道他们在Unicode文本前面重新引入了“u”,以使移植更容易。@SimeonVisser看一下这个答案底部的注释,它与Python 3.2发行说明有关。在那之前,我还以为%
-格式在不久的将来就要过时了future@Levon:谢谢,我不知道,我以为它很快就会被移除。简短的结论是,%
不会很快被删除,但建议新代码使用.format()
(基于)