python TypeError没有足够的格式字符串参数

jah*_*hil 1 python regex sed fabric

试图用python fabric更新文件

run('sed -i s/jahil/%s/g /etc/nginx/sites-enabled/%s' % (account))
Run Code Online (Sandbox Code Playgroud)

要么

run('sed -i "s/jahil/%s/g" /etc/nginx/sites-enabled/%s' % (account))
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: not enough arguments for format string
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?非常感谢 !

kin*_*all 5

错误告诉您问题:您%s的字符串中有两个占位符,但只有一个值.我假设你想在两个地方使用相同的值.在这种情况下:

run('sed -i s/jahil/%s/g /etc/nginx/sites-enabled/%s' % (account, account))
Run Code Online (Sandbox Code Playgroud)

或者,等效地,使用字典,以便我们可以使用命名占位符:

run('sed -i s/jahil/%(a)s/g /etc/nginx/sites-enabled/%(a)s' % {"a": account})
Run Code Online (Sandbox Code Playgroud)

完全用Python完成这种字符串替换很容易; 你可能会考虑这样做,而不是炮轰.