¿Qué %ssignifica en Python? ¿Y qué hace el siguiente fragmento de código?
Por ejemplo...
if len(sys.argv) < 2:
sys.exit('Usage: %s database-name' % sys.argv[0])
if not os.path.exists(sys.argv[1]):
sys.exit('ERROR: Database %s was not found!' % sys.argv[1])

%operador está en desuso a favor delstr.formatmétodo más potente , consulte PEP-3101 .Respuestas:
Es una sintaxis de formato de cadena (que toma prestada de C).
Por favor vea "PyFormat" :
Editar: Aquí hay un ejemplo realmente simple:
El
%stoken me permite insertar (y potencialmente formatear) una cadena. Observe que el%stoken se reemplaza por lo que pase a la cadena después del%símbolo. Observe también que también estoy usando una tupla aquí (cuando solo tiene una cadena usando una tupla es opcional) para ilustrar que se pueden insertar y formatear múltiples cadenas en una sola declaración.fuente
str.formatmétodo más potente .(name,)y no soloname?La respuesta de Andrew es buena.
Y solo para ayudarlo un poco más, así es como usa el formato múltiple en una cadena
Si está usando ints en lugar de string, use% d en lugar de% s.
fuente
%sen enteros, solo se convertirá en una cadena.print('This number will be padded with 4 zeros: %05d ' % 1)Esto funcionará.print('This number will be padded with 4 zeros: %05s ' % 1)- esto no `El
formatmétodo se introdujo en Python 2.6. Es más capaz y no mucho más difícil de usar:fuente
%sindica un tipo de conversión de cadena cuando se utilizan las capacidades de formato de cadena de Python. Más específicamente,%sconvierte un valor especificado en una cadena usando lastr()función. Compare esto con el%rtipo de conversión que usa larepr()función para la conversión de valor.Echa un vistazo a los documentos para el formato de cadena .
fuente
%sy%dson especificadores de formato o marcadores de posición para formatear cadenas / decimales / flotantes, etc.MÁS común usado Especificador de formato:
%s: cuerda%d: decimales%f: flotadorCódigo autoexplicativo:
fuente
En respuesta a su segunda pregunta: ¿Qué hace este código? ...
Este es un código de comprobación de errores bastante estándar para un script de Python que acepta argumentos de línea de comandos.
Entonces, la primera
ifdeclaración se traduce en: si no me ha pasado una discusión, le diré cómo debe pasarme una discusión en el futuro, por ejemplo, verá esto en la pantalla:La siguiente
ifdeclaración verifica si el 'nombre-base de datos' que le pasó al script realmente existe en el sistema de archivos. Si no, recibirá un mensaje como este:De la documentación :
fuente
Aquí hay un buen ejemplo en Python3.
fuente