我需要在Fabric任务中动态设置主机env。
我试过这个:
env.hosts = ['%s'] % server_ip_var
但是我收到了这个错误:
“班级列表”未定义“ mod ”,因此“%”运算符不能 在其实例中使用较少...
此检查会检测应解决但不能解析的名称。由于 动态调度和鸭子打字,这是有限的但可能 有用的案件数量。支持顶级和类级别的项目 比实例项更好。
答案 0 :(得分:1)
有点不清楚你在问什么,但是可以通过各种方式将对象转换为字符串。如果您的变量可以转换为字符串,则可以使用str()
函数:
env.hosts = [str(server_ip_var)]
另一种(更好)的方法是使用Format String Syntax:
env.hosts = ["{}".format(server_ip_var)]
答案 1 :(得分:1)
如果你真的想这样做,你可以继承list
:
class FormattableList(list):
def __mod__(self, *args, **kwargs):
return list(x.__mod__(*args, **kwargs) for x in self)
print(FormattableList(['a: %s', 'b: %s']) % 123)