Uso de un símbolo “%” en una variable
Estoy tratando de usar la siguiente declaración:
sssd_conf = \
''enumerate = true\n' \
''ldap_default_bind_dn = %(machines_ldap_dn)s\n' \
''ldap_default_authtok_type = password\n' \
''ldap_default_authtok = %(ldap_password)s\n' \
''use_fully_qualified_names = false\n' \
''override_homedir = /home/%d/%u\n' \
% {
''ldap_password': self.ldap_password,
''machines_ldap_dn': get_machines_ldap_dn(ldap_master, master_username, master_pw),
''master_ip': master_ip
}
Cuando ejecuto el código con esta variable, obtengo TypeError: not enough arguments for format string
.
Como puedes ver, *necesito* usar un códo literal %
en 'override_homedir = /home/%d/%u\n'
, pero Python interpreta %d
y %u
como variables para colocar en esas posiciones. ¿Cómo puedo escapar el %
en mi declaración?
Intenté 'override_homedir = /home/\%d/\%u\n'
, pero esto no funcionó.
Por cierto, este código es de Python 2.7. Lo heredé y no quiero migrarlo a la versión 3 en este momento.
davy.ai
Para escapar el carácter
%
en la cadena, puedes utilizar otro carácter%
. Por lo tanto, tu línea debería ser:Esto dará como resultado la cadena literal
/home/%d/%u
.