Как разделить строку с 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
#аренда#А866⤴️⤴️⤴️
Постер на кухне пытается 🥷 текуче скрыться со своего места, а стулья решили, что невидимость поможет им остаться незамеченными 🫥
Наверное, они спешат в гостиную, где все такое пестрое и живабельное, что чувствуешь себя, как на 🌅 закате после музыкального фестиваля где-нибудь в Мексике 🇲🇽
📸 фотограф Александра Дуброва @AlexandraDubrova
🖌 дизайнер Мария Семенова +7 905 274 0683
📐 25 м²
🪜 2/12 этаж
💸51,9к/мес + к/у 49,9к/мес + к/у
🔥#БЕЗКОМИССИИ
📍Черниговская, 17
📞 на связи собственник Анна 89086556187
*больше фото и план в комментариях ⤵️
Нестыдные | Петербург.
Подписаться
#аренда#А866⤴️ фото ⤴️
⛔️⛔️⛔️ СДАНА ПОДПИСЧИКУ НЕСТЫДНЫХ ⛔️⛔️⛔️
🏆 Главный приз в конкурсе «озеленение района» 🌿 достается этой квартире.
Такого насыщения пространства 🪵 деревом и вечно-зелеными не удалось добиться ни одной 👵🏻 «мадам-удобрение» (ох уж этот миллениальский кризис).
И если желание хвастаться балконом затмевает ⏳ длительность езды до работы — как говорится 📲 «цифры те же».
📸фотограф Александра Дуброва: @AlexandraDubrova
📐 40 м²
🪜 этаж 4 из 9
💸 55к/мес
🐶#petfriendly
шутка от собственницы: берем только с собаками, если пришли на просмотр без них — то все, разворачиваем и не показываем квартиру
📍Сестрорецк, Воскова, 1
📱 на связи агент Андрей @Estate_Navigator_13
*больше фото в комментариях ⤵️
Нестыдные | Петербург.
Подписаться