Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python TypeError格式字符串的参数不足_Python_Regex_Sed_Fabric - Fatal编程技术网

python TypeError格式字符串的参数不足

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,

尝试使用python结构更新文件

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()
(基于)