Разбор аргументов командной строки в 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.
Теоретически он должен это делать.