1

尝试使用 python 结构更新文件

run('sed -i s/jahil/%s/g /etc/nginx/sites-enabled/%s' % (account))

或者

run('sed -i "s/jahil/%s/g" /etc/nginx/sites-enabled/%s' % (account))

错误:

TypeError: not enough arguments for format string

任何想法 ?非常感谢 !

4

3 回答 3

5

该错误告诉您问题所在:您%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 中进行这种字符串替换很容易;你可以考虑这样做而不是炮轰。

于 2012-07-09T14:58:11.693 回答
2

就像错误所说的那样,您所说的参数数量与您提供的数量不匹配。一个自然错误,因为您希望它们相同:

run('sed -i "s/jahil/%s/g" /etc/nginx/sites-enabled/%s' % (account, account))
于 2012-07-09T14:56:33.273 回答
1

您的格式字符串中有两个 %s,因此您正在构建的字符串期望获得两个 string参数。

除非accounts是两个字符串的元组,否则您将收到此消息。

你应该有这样的东西:

   % (account, something_else)

如果这两个字符串都需要,account那么 % (account, account)就可以了。

于 2012-07-09T14:56:29.750 回答