Как разделить строку с 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
В галерее КОРНЕЙ стартовал проект «Искусственный язык» студентов MSCA
Это чистый диалог на стыке contemporary art и конлангинга (создания искусственных языков).
Участники не просто писали картины, они придумывали несуществующие понятия. И теперь эти слова становятся и названиями работ, и ключами к их восприятию. В экспозиции: инсталляции, живопись и видео-арт, которые говорят с нами на только что изобретенном наречии.
Услышать истории из первых уст и расшифровать «диалекты» авторов можно на ближайших медиациях:
✔️ 19 марта, 19:30
✔️ 20 марта, 15:00, 19:30
✔️ 21 марта, 12:00
✔️ 22 марта, 16:00
Также в программе мастер-классы по вязанию, живописные эксперименты и онлайн-дискуссия о том, как язык создает реальность.
🗓️ до 22 марта
⛳️ ул. Б. Никитская, 22/2, под. 3
#анонс_лично#галереякорней
#искусственныйязык#msca
#анонс_лично
В преддверии дня всех влюбленных Московская школа современного искусства проведет лекцию «Отношения во времени»о ярких и известных парах в искусстве:
✔️ Христо и Жанна-Клод
✔️ Илья и Эмилилия Кабаковы
✔️ Абрамович и Улай
✔️ Родченко и Степанова.
Узнайте, как они вдохновляли друг друга, создавали совместные проекты и как долго длились их творческие союзы.
Вход свободный по регистрации.
Визуал: работа Варвары Степановой. Карикатура на себя и Александра Родченко. 1920 год
🗓️ 13 февраля, 19.30
⛳️ Центр дизайна Artplay,
ул. Н. Сыромятническая, 10, стр.3
#лекция#msca#artplay#отношениявовремени
Лена Сурова на выставке «Обратная сторона Венеры»в Cube.Moscow.
Выпускница MSCA в своём творчестве разбирает образ женщины через символ Венеры — от древних идолов до Барби.
Понравилось, как художница балансирует между критикой и принятием. Да, массовая культура навязывает шаблоны, но почему бы не пересобрать их под себя? Ведь даже «Барби» сегодня — это уже не просто пластиковый идеал, а поле для экспериментов. Лена ловко играет с этим, показывая, что женственность — не клетка, а бесконечный конструктор.
Кто угадает из чего сделаны работы?
🗓️ успейте до 13 апреля
⛳️ ул. Тверская, 3 (-2 этаж)
#были_лично#венера#msca
#cubemoscow#ленасурова