2015-03-17 2 views
0

У меня есть переменная toPath (содержит путь как C:/Program Files(x86)/bla).
Эта переменная передается как agrument: '[-operation update -contents ' + toPath + ']' Но поскольку у меня есть пробел в этой переменной, я получаю IllegalArgumentException. Как я могу это исправить?Пространство в переменной python

+0

Что именно вы пытаетесь сделать? И как выглядит код? Нам понадобится больше информации, чем вам помочь. Пожалуйста, отредактируйте свой вопрос. – mhlz

+0

'toPath' - это строка. Правильно? Если это так, причина ошибки, о которой вы говорите, неверна. Можете ли вы сказать мне вывод для 'type (toPath)'? –

+0

@MoinuddinQuadri это строка – Diooi

ответ

2

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

Если вы пытаетесь запустить команду, созданную из нескольких переменных, вы можете быть уязвимы для инъекционных атак. Чтобы этого избежать, используйте модуль subprocess и передайте все параметры в виде списка. Модуль будет заботиться обо всех материалах, чтобы заставить его работать и с пространствами.

Например ls -l должны выполняться:

subprocess.call(["ls", "-l"]) 

Ваш пример caontains [] и может быть весьма различны, но без него было бы:

subprocess.call(['-operation','update', '-contents', toPath]) 

Пожалуйста, обратите внимание, что есть и другие функции, чем call() (который возвращает только код возврата) в модуле подпроцесса.

2

Пропустить аргумент в двойных кавычках.

toPath = "\"C:/Program Files(x86)/bla\""; 
1

попробовать

'[-operation update -contents "' + toPath + '"]' 
Смежные вопросы