Aquí hay una aplicación Python barebones que simplemente imprime los argumentos de línea de comandos pasados en:Cómo aceptar argumentos de línea de comandos que termina en la barra invertida
import sys
if __name__ == "__main__":
print "Arguments:"
for i in range(len(sys.argv)):
print "[%s] = %s" % (i, sys.argv[i])
Y aquí hay algo de carreras de muestra:
python args.py hello world
Arguments:
[0] = args.py
[1] = hello
[2] = world
python args.py "hello world"
Arguments:
[0] = args.py
[1] = hello world
python args.py "hello\world"
Arguments:
[0] = args.py
[1] = hello\world
Así muy bien. Pero ahora, cuando fin a cualquier discusión con una barra invertida, Python ahoga en él:
python args.py "hello\world\"
Arguments:
[0] = args.py
[1] = hello\world"
python args.py "hello\" world "any cpu"
Arguments:
[0] = args.py
[1] = hello" world any
[2] = cpu
Soy consciente de Python menos que ideales comportamiento cadena de texto a través del prefijo "r" (link), y parece claro que está aplicando el mismo comportamiento aquí.
Pero en este caso, no tengo control de los argumentos que se me pasan, y no puedo exigir que los argumentos no terminen en una barra invertida. ¿Cómo puedo evitar esta limitación frustrante?
-
Editar: Gracias a los que señaló que este comportamiento no es específico de Python. Parece ser el comportamiento de shell estándar (al menos en Windows, no tengo una Mac en este momento).
Pregunta actualizada: ¿Cómo puedo aceptar los argumentos que terminan en una barra diagonal inversa? Por ejemplo, uno de los argumentos para mi aplicación es una ruta de archivo. No puedo exigir que el cliente me lo envíe sin una barra inclinada invertida, o con la barra invertida escapada. ¿Es esto posible de alguna manera?
¿Qué hace el shell estándar con una barra diagonal inversa? ¿Qué hace un comando estándar como "echo" o "ls" con una barra diagonal inversa? –
Gracias S Lott, tienes razón, cuando hago una consola .NET aplicación para hacer lo mismo, obtengo el mismo comportamiento. Por lo tanto, no es específico de Python. –
No ponga su edición al principio porque las primeras palabras de sus preguntas son el resumen en la lista de preguntas principales: su comentario de edición no es es un buen resumen. –