Вопрос по directory, python, subprocess – Обработка каталогов с пробелами Python subprocess.call ()

13

Я пытаюсь создать программу, которая сканирует текстовый файл и передает аргументы подпроцессу. Все работает нормально, пока я не получу каталоги с пробелами в пути.

Мой метод split, который разбивает аргументы, срабатывает по пробелам:

s = "svn move folder/hello\ world anotherfolder/hello\ world"

task = s.split(" ")
process = subprocess.check_call(task, shell = False)

Сделайте, либо мне нужна функция для анализа правильных аргументов, либо я передаю всю строку подпроцессу, не разбивая ее в первую очередь.

Я немного растерялся.

если вы создаете имя файла, которое читается, почему бы не разделить значения запятой? а затем разделить на "," вместо всех хлопот? Inbar Rose
Можете ли вы рассчитывать на фиксированное количество лексем, разделенных пробелом? Silas Ray
как насчет цитирования имен файлов? Andreas Jung

Ваш Ответ

1   ответ
17

task = ["svn",  "move",  "folder/hello world", "anotherfolder/hello world"]
subprocess.check_call(task)

Если ваш файл содержит целые команды, а не только пути, вы можете попробоватьshlex.split ():

task = shlex.split(s)
subprocess.check_call(task)
+1 заshlex.
Спасибо Спасибо! использование списка решает всевозможные странные цитаты / экранирование +1

Похожие вопросы