我真的很喜欢使用.format来调用命令而不是重复自己。我有这个功能
def function_2()
function_1('command {0} {2}')
然后在另一个函数中
subprocess.call(['{0}; {1}; {2}; command {0} {2}'.format(var_0, var_1, var_2)])
我想使用第一个函数中定义的变量,只需调用它们,就像我在第一个函数中一样。我不想在两个函数中都使用.format重复自己。
如果第二个函数中该字符串为“{0}”,为什么编译器不会将其拾取并在第一个函数中将其视为与“{0}”相同。当你通过参数传递{}时,它不会把它拿起来?
有没有办法以简单的方式做到这一点?毕竟我想要这样的东西:
{0} {2}
这暂时不起作用。它打印出来......
{{1}}
答案 0 :(得分:1)
使用command
Concat上一个字符串。您不需要格式化command
中保留的新占位符:
def function_1(command):
s = '{0} ; {1} ; {2}; ' + command
subprocess.call([s.format(var_0, var_1, var_2)])
command
中的占位符现在用于以下行中的格式化。
为了使command
的定位更加灵活,您可以将花括号加倍,并应用预格式化步骤。
def function_1(command):
s = '{{0}} ; >>> '{{0}} {0}'.format('command {0} {2}')
'{0} command {0} {2}'
; {{2}}; {0}'.format(command)
subprocess.call([s.format(var_0, var_1, var_2)])
演示:
User
答案 1 :(得分:0)
希望这是你所期待的。
subprocess.call(['{var0}; {var1}; {var2}; command {var0} {var2}'.format(var0=var_0, var1=var_1, var2=var_2)])