Как разделить строку с 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
Konzert von Vlad Mayer anlässlich des 88. Geburtstages von Wladimir Wyssozki🤩, derals Schauspieler, Dichter und Sänger Millionen von Menschen inspiriert und eine große Erbe in der Weltkunst hinterlassen hat.❤️
Das Konzert „Danke, dass du lebst!“ findet zum vierten Mal in Folge in diesem Format statt!
🎤Vlad Mayer, für den das Werk des großen Barden ein fester Bestandteil seines Lebens ist, hat ein vielschichtiges Konzertprogramm zusammengestellt. Begleitet von der russischen siebensaitigen Gitarre 🎸 erklingen sowohl bekannte Werke als auch Lieder, die im Rahmen dieses Konzerts bislang nicht aufgeführt wurden. Der Abend ist als fortlaufende musikalisch-poetische Erzählung konzipiert, die verschiedene Facetten von Wyssozkis Schaffen offenlegt: die lyrische, philosophische, dramatische und satirische.
🗓️ Am 23. Januar um 19:00 Uhr
📍Im Konzertsaal des Russischen Hauses
🖇️Anmeldung
#konzert#sänger#wyssozki#geburtstag#musik#poesie
Konzert von Vlad Mayer anlässlich des 88. Geburtstages von Wladimir Wyssozki🤩, derals Schauspieler, Dichter und Sänger Millionen von Menschen inspiriert und eine große Erbe in der Weltkunst hinterlassen hat.❤️
Das Konzert „Danke, dass du lebst!“ findet zum vierten Mal in Folge in diesem Format statt!
🎤Vlad Mayer, für den das Werk des großen Barden ein fester Bestandteil seines Lebens ist, hat ein vielschichtiges Konzertprogramm zusammengestellt. Begleitet von der russischen siebensaitigen Gitarre 🎸 erklingen sowohl bekannte Werke als auch Lieder, die im Rahmen dieses Konzerts bislang nicht aufgeführt wurden. Der Abend ist als fortlaufende musikalisch-poetische Erzählung konzipiert, die verschiedene Facetten von Wyssozkis Schaffen offenlegt: die lyrische, philosophische, dramatische und satirische.
🗓️ Am 23. Januar um 19:00 Uhr
📍Im Konzertsaal des Russischen Hauses
🖇️Anmeldung
#konzert#sänger#wyssozki#geburtstag#musik#poesie
In diesem Jahr jährt sich der 85. Geburtstag des Dichters, Essayisten, Übersetzers und Literaturnobelpreisträgers Iosif Brodsky. Sein Werk verbindet sprachliche Präzision, feine Ironie, philosophische Tiefe und einen besonderen Blick auf Mensch und Zeit.
Beim Poesieabend „Ins Zwiegespräch mit sich selbst..." haben die Gäste die Möglichkeit, Brodskys Texte📜 neu zu entdecken und sie in der Interpretation anderer Teilnehmer zu hören. Gerade in der Vorweihnachtszeit🕯️ entfalten seine warmen, nachdenklichen Weihnachtsgedichte eine besondere Stimmung.
🗣️ Alle Liebhaber der Poesie sind eingeladen, ihre Lieblingsgedichte Brodskys in der Originalsprache oder in deutscher Übersetzung vorzutragen.
🗓️ Die Veranstaltung findet am 4. Dezember um 18:00 Uhr statt.
💌 Anmeldung für Rezitationen erfolgt per E-Mail: [email protected]
#poesie#gedichte#dichter#brodsky#geburtstag#berlinevents#kulturevent