Как разделить строку с shell-командой на отдельные аргументы в виде списка?
Если сделать просто сплит по пробелу то получим то что надо, кроме случаев со вставками текста с пробелами. Например так:
>>> '-arg "I Am Groot"'.split(' ')
['-arg', '"I', 'Am', 'Groot"']
Чтобы учитывать текст в кавычках как единый аргумент можно воспользоваться функцией shlex.split()
Кто читает мой канал давно, уже в курсе.
А что делать, если нужно обратное действие? Объединить аргументы из списка в строку и при этом добавить кавычки в аргумент с пробелами.
Конечно, если вы используете subprocess то он сам всё разрулит. Но если вам нужна именно команда одной строкой, то можно воспользоваться готовой функцией в том же subprocess.
>>> from subprocess import list2cmdline
>>> list2cmdline(['-arg', 'I Am Groot'])
'-arg "I Am Groot"'
Он также позаботится об экранировании уже имеющихся кавычек
>>> list2cmdline(['-arg', 'I Am "Groot"'])
'-arg "I Am \"Groot\""'
А вот так он может "схлопнуть" в команду JSON
>>> list2cmdline(['--json', json.dumps({'key': 'value'})])
'--json "{\"key\": \"value\"}"'
_______________
Возможно кто-то спросит, а зачем соединять аргументы в строку если subprocess сам это сделает а os.system не наш путь?
Мне как-то потребовалось отправлять команду на удалённое выполнение и в API поддерживалось указание команды только строкой. Так что всякое бывает)
#libs#basic
💫Ваши арт- и гастропланы на 14 февраля уже здесь #lifestyle
День Святого Валентина — прекрасный повод объединить искусство и гастрономию, чтобы создать незабываемый день для двоих. Мы подготовили подборку стильных и романтичных комбинаций локаций в пешей доступности для идеального свидания.
Поделитесь подборкой с тем, кто сделает ваш День Святого Валентина по‑настоящему особенным 🤍
ART FLASH
💫Что новогоднего можно найти в «Котомке»: идеи подарков для любимых #lifestyle
Если вы все еще не купили подарки для друзей и близких, у нас есть хорошая новость. Мы заглянули в пространство «Котомка» и собрали подборку вещей, которые приятно дарить и не хочется откладывать на потом.
Любите дарить подарки?
❤️ — да, люблю
💔 — нет, люблю получать
ART FLASH
🌟Ваши арт+гастро планы в Санкт-Петербурге#lifestyle
После выставки хочется, чтобы впечатление не растворилось в дороге — в метро или такси. Чтобы разговор об искусстве продолжился за столом, а вкус ужина перекликался с увиденными работами.
Мы собрали рестораны и кафе в культурной столице в шаговой доступности от галерей — для тех, кто любит продлевать свои культурные маршруты.
ART FLASH
🍿Звезды есть? А если найдем?!
Сколько звезд в нагрудном украшении этой женщины вы насчитали? А сколько концов у этих звезд?
Считайте внимательно, но, сколько бы их ни было, они символизируют одно – солнце.
Звезда – солярный символ, одна из самых распространенных фигур в украшениях, она может иметь пять концов, шесть, семь и даже восемь, рассказала «Молодежке» научный сотрудник музея-заповедника – этнографического комплекса «Дагестанский аул» Сафия Рабаданова.
«Многоконечные звезды обозначали солнце. Вообще, сколько бы концов там ни было, это все обозначало солнце. В доисламской культуре Дагестана встречается звезда с пятью лучами»,
– обращает внимание сотрудница музея.
Солярный знак – один из древнейших символов, именно поэтому фигур, символизирующих солнце, было так много в украшениях горянок.
На фото: аварка из села Урада (Шамильский район), 1967 год.
#lifestyle
Рабочие дни 2025 ис овер — машем им ручкой вместе с коктейлем от Стэнли Туччи.
И посылаем их в жопу, конечно. Ну, так, для проформы.
Включаем новогоднее настроение — пытаемся, хотя бы
🤩
#lifestyle
#Lifestyle🎄
На дворцовой площади
Очень красивая елка
И вообще классная новогодняя атмосфера в центре очень красиво все горит и сверкает ✨💫💫💫💫
Делитесь фотками своих елок😍💓🎄
Получила , как это модно говорить, бьюти бокс, а если просто - доставку с косметическими средствами 😊🍀
Готова сделать распаковку.
Жертва маркетинга или гонка за молодостью - не знаю, как это называется, но как показывает практика: для начала надо высыпаться!
Кто со мной согласен - ставьте реакции 🔥
#lifestyle