Разбор аргументов командной строки в python с пробелами

Я вызываю script из ant. Я получаю его как одну строку от вызывающего, но python странно рассматривает его как две отдельные строки. У меня есть script, который читает имя файла с помощью этого пути в окнах. Структура папки может содержать или не иметь пробелы между

Вот пример

test.py D:/test/File Name

Я знаю, что это можно сделать с помощью optparse. Есть ли способ, которым я могу прочитать параметр как единственный аргумент например, я хочу получить его в sys.argv [index] (как одна строка). Я устал префиксом "и", но без успеха.

Ответ 1

Вы передаете имя папки, заключенную в кавычки:

test.py "D:\test\File Name"

sys.argv[1] будет содержать путь к папке, включая пробелы.

Если по какой-то причине вы не можете процитировать имя папки, вам нужно будет использовать модуль ctypes и использовать функцию Win32 API GetCommandLine. Здесь функциональный пример.

Ответ 2

Соглашение о передаче пробелов в качестве аргументов - это экранирование пробелов.

test.py D:/test/File\ Name

Таким образом, у вас будет доступ к "D:/test/File Name" в вашем python script.

Ответ 3

Согласно MS: https://msdn.microsoft.com/en-us/library/windows/desktop/17w5ykft(v=vs.85).aspx

Обратные косые черты интерпретируются буквально, если только они не предшествуют двойной кавычки.

Я wondwring, если Python в Windows использует этот метод: https://msdn.microsoft.com/en-us/library/windows/desktop/bb776391(v=vs.85).aspx

Разбор командной строки для создания sys.argv. Теоретически он должен это делать.