Как разделить строку с 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
Nathan "Prince" Nazaroff — Jewish Freilach Songs (Folkways Records, 1954)
#traditional#freilach#accordion#octophone#yiddish#jew#Ukraine#Russia
«Фреилах» — слово на идише, обозначающее «счастливый» или «радостный». Оно же используется в качестве названия музыкального стиля.
В сборнике Jewish Freilach Songs представлены восточноевропейские песни в стиле «фреилах». Среди них — известные шлягеры Tumbalalaika и Vander Ich Mir Lustig («Пока я радостно шагаю»). К слову, Vander Ich Mir Lustig сильно напоминает русскую песню «Яблочко», увековеченную революционными солдатами в период Гражданской войны. А в некоторых песнях, например, в Ihr Fregt Mich Vos Ich Troier (Вы спрашиваете меня, почему я скорблю?) можно даже расслышать русскую речь.
Исполняет песни Натан Назарофф, среди ервейских слушателей получивший прозвище «Принц». О нём мало что известно, кроме того, что он иммигрировал в США в 1914 году, имел еврейско-русское происхождение и работал в Театре Русского Балета в Нью-Йорке.
На этой пластинке Назарофф аккомпанирует себе на аккордеоне и октофоне, струнном инструменте, напоминающем мандолину. Стиль его исполнения восходит к городской музыке Одессы и других портовых городов.
В общем, привет всем любителям «Одесских рассказов» Исаака Бабеля.
🔗Spotify | AppleMusic | Telegram
The Brothers Nazaroff — The Happy Prince (Folkways Records, 2015)
#traditional#freilach#klezmer#accordion#mandolin#fiddle#payk#guitar#tzouras#ukulele#yiddish#jew#Ukraine#Russia#United_States
Эта запись — дань уважения Натану «Принцу» Назароффу. В 1954 году в Штатах он выпустил пластинкуJewish Freilach Songs и таким образом познакомил самый широкий круг слушателей с фольклором восточноевропейских евреев. До сих пор работа Назароффа остаётся чуть ли не единственной, на которой представлен музыкальный стиль Одессы и других портовых городов Черного Моря.
Международная супергруппа The Brothers Nazaroff, в состав которой входят Дэниел Кан, Псой Короленко, Майкл Альперт, Джейк Шульман-Мент, Боб Коэн и Хампус Мелин, вдохнула новую жизнь в наследие «Принца». «Братья» уверены, что эти песни заслуживают внимания и особого места в современной еврейской культуре.
Майкл Векс — автор крупнейшего исследования идиша Born to Kvetch. В своих заметках об альбоме Назароффа отмечает следующее:
Если бы в начале 1950-х годов в Америке существовали группы, исполняющие в барах песни на идише, то они звучали бы именно так
Братья Назарофф — как раз такая группа, но только из XXI века.
🔗Spotify | AppleMusic | Bandcamp