Как разделить строку с 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
В Лос-Анджелесе состоялась 68-я церемония вручения музыкальной премии «Грэмми».
Собрали победителей в основных номинациях:
Песня года: Билли Айлиш — Wildflower
Запись года: Кендрик Ламар и SZA — Luther
Альбом года: Bad Bunny — Debí Tirar Más Fotos
Лучший новый артист: Оливия Дин
Лучший вокальный поп-альбом: Леди Гага — Mayhem
Лучший рэп-альбом: Кендрик Ламар — GNX
Лучший альбом в жанре R&B: Леон Томас — Mutt
Лидерами по количеству полученных наград стали Кендрик Ламар (5), Lady Gaga, Bad Bunny, Turnstile и Леон Томас (2).
@wownewsru#grammy2026
В главной номинации «Альбом года» победил Bad Bunny. Его работа «Debí Tirar Más Fotos» стала первым латиноамериканским альбомом в истории, который получил эту престижную награду.
@wownewsru#grammy2026
Секретный гость на «Grammy 2026» — певица Шер!
Артистку отметили за выдающийся вклад в музыку, а также она вышла на сцену, чтобы вручить награду в номинации «Запись года».
Правда в моменте она забыла вручить статуэтку и собралась уже уходить со сцены — надеемся, это было так задумано.
Победителем в этой номинации стал Кендрик Ламар.
И да, Шер 79 лет! Разве в это можно поверить?
@wownewsru#grammy2026
На церемонии «Grammy 2026» прошёл трибьют ушедшим музыкантам, в том числе легендарному Оззи Осборну.
Легенда соул-музыки Лорин Хилл вышла на сцену вместе с ведущими R&B и рэп-исполнителями.
Семья Оззи Шэрон, Келли и Джек Осборн находились в зале и были очень растроганы выступлением 💔
@wownewsru#grammy2026
Билли Айлиш с песней «Wildflower» получила «Grammy 2026» в номинации «Песня года».
К сожалению, «Abracadabra» не смогла повторить этот успех и уступила в борьбе в этой номинации.
@wownewsru#grammy2026
Сингл Lady Gaga «Disease» не одержал победу в номинации «Лучшее сольное поп-исполнение» на «Grammy 2026».
Несмотря на статус мощного лид-сингла и одного из самых обсуждаемых релизов года, композиции не удалось принести Леди Гаге третью статуэтку «Грэмми» за вечер.
Награда досталась треку «Messy» Лолы Янг.
@wownewsru#grammy2026
Альбом «MAYHEM» Lady Gaga одержал победу на «Grammy 2026» в номинации «Лучший вокальный поп-альбом».
Этот вечер стал триумфальным для Стефани: она получила вторую статуэтку за церемонию и 16-ю награду «Грэмми» в карьере, укрепив свой статус шестой самой награждаемой артистки в истории премии — наравне с Адель.
Особенно символично, что это первая победа Леди Гаги в данной номинации за последние 15 лет.
Поздравляем ❤️🔥
@wownewsru#grammy2026
Сабрина Карпентер второй год подряд зажигает сцену премии «Грэмми» яркими и запоминающимися выступлениями.
В этом году певица исполнила трек «Manchild» — делимся эффектными фрагментами шоу.
@wownewsru#grammy2026
Kendrick Lamar стал самым награждаемым рэпером в истории «Грэмми» — на его счету 26 побед. Ранее рекорд принадлежал Jay-Z с 25 наградами.
Сегодня Kendrick победил во всех рэп-номинациях «Grammy 2026».
Легенда жанра не иначе 🔥
@wownewsru#grammy2026