Здесь баботированное приложение Python, которое просто печатает аргументы командной строки, переданные в:
import sys
if __name__ == "__main__":
print "Arguments:"
for i in range(len(sys.argv)):
print "[%s] = %s" % (i, sys.argv[i])
А вот несколько прогонов пробега:
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
Пока все хорошо. Но теперь, когда я заканчиваю любой аргумент обратной косой чертой, Python задыхается от него:
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
Мне известно о неправильном строчном строении Python с использованием префикса "r" (link), и кажется очевидным, что он применяет здесь одно и то же поведение.
Но в этом случае я не могу контролировать, какие аргументы переданы мне, и я не могу обеспечить, чтобы аргументы не заканчивались обратным слэшем. Как я могу обойти это разочарование?
-
Изменить: Спасибо тем, кто указал, что это поведение не относится к Python. По-видимому, это стандартное поведение оболочки (по крайней мере, в Windows, на данный момент у меня нет Mac).
Обновленный вопрос: Как я могу принять аргументы, заканчивающиеся на обратную косую черту? Например, одним из аргументов моего приложения является путь к файлу. Я не могу обеспечить, чтобы клиент отправил его мне без обратной обратной косой черты или с обратным слэшем. Это возможно в любом случае?