Как разделить строку с 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
Пожалуй, первым покажу содержимое самой большой коробочки ☺️ братец кролик котик ☺️ теперь точно никого из этой линейки покупать не буду😀 можно сказать, сердце успокоилось ☺️ вот этот бежевый мне нравится даже больше ☺️ такая булочка аппетитная (судя по тому, как шорты на попку налезали, булочки он точно любит😂)
#Алёнкина_коллекция#hani
Hani from Yunnan China — Hani Polyphonic Singing in Yunnan China (Sublime Frequencies, 2024)
#traditional#field_recording#hani#choral#babi#mepa#chiwo#labi#lahe#meba#China
Альбом Hani Polyphonic Singing in Yunnan China демонстрирует уникальные традиции полифонического пения народа хани — этнической группы, численностью около 1,5 миллионов человек, проживающей на юге китайской провинции Юньнань. Меньшие сообщества хани также встречаются в соседних Лаосе и Вьетнаме. В языковом отношении хани связаны с ветвью йи тибето-бирманской языковой семьи.
Музыкальные традиции хани отличает хоровой стиль, где голоса накладываются друг на друга с небольшим временным сдвигом, создавая эффект перекатывающегося, как бы каскадного звучания. При этом каждый участник добавляет свою вариацию мелодии. Такое сочетание черт создает, с одной стороны, необычное даже для Юго-Восточной Азии пение, напоминающее тибетскую духовную музыку, а с другой — сближает его с европейскими мессами и мотетами позднего Средневековья и эпохи Возрождения.
Ансамбль также использует традиционные инструменты народа хани, такие как баби (лист дерева, используемый как духовой инструмент), мепа (лист дерева, свернутый в форме рога), чиво (трехструнный смычковый инструмент), лаби (бамбуковая флейта с шестью отверстиями), лахе (небольшая трехструнная лютня) и меба (вертикальный язычковый инструмент).
🔗Bandcamp