TGINSIGHT SIMILAR POSTS
Најди сличен содржај
Изворен канал @pythonotes · Post #51 · 14 мар.
В посте про правильное использование аргумента shell упоминалось что в некоторых случаях атрибуты следует отправлять списком а не строкой. Что делать, если команда приходит именно строкой? Как её преобразовать в список? Ответ очевиден >>> cmd_str = 'ls -sl' >>> cmd_lst = cmd_str.split(' ') >>> print(cmd_lst) ['ls', '-sl'] Но что, если команда имеет более сложный вид в плане пробелов? >>> cmd_str = 'mkdir "My Folder Name"' >>> print(cmd_str.split(' ')) ['mkdir', '"My', 'Folder', 'Name"'] Определённо что-то пошло не так! Имя директории содержит пробелы, поэтому весь путь взят в кавычки. Нам определённо не надо её разделять на аргументы. Чтобы сделать всё правильно нам потребуется распарсить строку чтобы обнаружить, что там в кавычках а что нет. Но в стандартной поставке Python давно уже есть готовое решение, моудль shlex (shell lexical analyzers) который всё это умеет. >>> import shlex >>> shlex.split('mkdir "My Folder Name"') ['mkdir', 'My Folder Name'] Теперь команда сработает верно. И не переживайте что кавычки пропали, subprocess сам всё разрулит с пробелами 😎. На Windows всё аналогично. #libs
Hashtags
Пронајдени 0 слични објави
Пребарај: #libs
Не се пронајдени слични објави.
Оваа објава нема претходно пресметани резултати на сличност.