尝试使用 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
任何想法 ?非常感谢 !
该错误告诉您问题所在:您%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 中进行这种字符串替换很容易;你可以考虑这样做而不是炮轰。
就像错误所说的那样,您所说的参数数量与您提供的数量不匹配。一个自然错误,因为您希望它们相同:
run('sed -i "s/jahil/%s/g" /etc/nginx/sites-enabled/%s' % (account, account))
您的格式字符串中有两个 %s
,因此您正在构建的字符串期望获得两个 string
参数。
除非accounts
是两个字符串的元组,否则您将收到此消息。
你应该有这样的东西:
% (account, something_else)
如果这两个字符串都需要,account
那么 % (account, account)
就可以了。