Как разделить строку с 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
Wenn draußen die Kälte🥶 kommt, bringen wir den Sommer☀️ auf die Leinwand📺: das Komödiendrama „Erster Sommer” wird am 19. November um 19:00 Uhr in russischer Sprache mit englischen Untertiteln gezeigt.
🎞️ Der 15-jährige Sascha lebt in einer Kleinstadt an der Wolga, und dieser Sommer wird sein Leben verändern. Gemeinsam mit seinen Freunden startet er ein kleines Geschäft, um sich eine Sony PlayStation🎮 leisten zu können. Das Haus des Nachbarmädchens wird plötzlich zum Mittelpunkt seiner Aufmerksamkeit, und auf der Sommerdisco💃🏻 kommt es zur ersten handfesten Auseinandersetzung. Während er erwachsen wird, lernt Sascha den Wert anderer Leben kennen, erlebt Schmerz und Verlust und steht vor Entscheidungen, die alles andere als kindlich sind.
🗣️Der Film wird vom Produzenten Denis Kovalevsky vorgestellt.
FSK: 18+
📲Anmeldung ist erforderlich.
#kino#berlinevents#drama#komödie#sommer#film
Wenn draußen die Kälte🥶 kommt, bringen wir den Sommer☀️ auf die Leinwand📺: das Komödiendrama „Erster Sommer” wird am 19. November um 19:00 Uhr in russischer Sprache mit englischen Untertiteln gezeigt.
🎞️ Der 15-jährige Sascha lebt in einer Kleinstadt an der Wolga, und dieser Sommer wird sein Leben verändern. Gemeinsam mit seinen Freunden startet er ein kleines Geschäft, um sich eine Sony PlayStation🎮 leisten zu können. Das Haus des Nachbarmädchens wird plötzlich zum Mittelpunkt seiner Aufmerksamkeit, und auf der Sommerdisco💃🏻 kommt es zur ersten handfesten Auseinandersetzung. Während er erwachsen wird, lernt Sascha den Wert anderer Leben kennen, erlebt Schmerz und Verlust und steht vor Entscheidungen, die alles andere als kindlich sind.
🗣️Der Film wird vom Produzenten Denis Kovalevsky vorgestellt.
FSK: 18+
📲Anmeldung ist erforderlich.
#kino#berlinevents#drama#komödie#sommer#film
Am 20. Januar um 19:00 Uhr wird die Familienkomödie „Das Feld der Wunder“ in russischer Sprache gezeigt.📽️
🌞 Jeden Sommer versammelt sich eine Gruppe von Kindern in ihrem geheimen Versteck mitten zwischen den hohen Maisstängeln eines alten Ferienorts. Es kursiert die Legende von den Schätzen einer Fürstin, die vor Napoleon geflohen ist, und der Traum vom Abenteuer wird Wirklichkeit, als die neue Schülerin Katja auftaucht: ihr Vater, ein Geschäftsmann, plant, das Feld zu kaufen, um dort einen Baumarkt zu errichten. Die Kinder schließen sich zusammen, um ihren heiligen Ort zu verteidigen.
Meldet euch an und kommt ins Filmtheater im Russischen Haus vorbei!🫶🏻
#kino#komödie#familienfilm#sommer#jugend#kindern
DasKrimidrama „Der Sommer kommt“, das bei großen Filmfestivals mehrmalsausgezeichnet wurde, wird am 29. Januar um 19:00 Uhr im Russischen Haus in Berlin gezeigt!
🎬 Der Film erzählt die Geschichte eines jungen Mannes namens Nikita, der aus der Provinz nach Moskau kommt. Er mietet ein Zimmer, lernt seine Mitbewohnerin kennen und verstrickt sich in eine komplizierte Beziehung. Durch einen Freund erfährt er von einem reichen Typen namens Dan. Der Film greift Motive aus der Welt des Verbrechens, moralische Entscheidungen und deren Auswirkungen auf das Leben der Protagonisten in der Großstadt auf. Die Geschichte spielt vor dem Hintergrund sozialer Unterschiede und innerer Widersprüche, die für das moderne Stadtleben charakteristisch sind.
🎞️Die Vorführung findet im Rahmen des Internationalen Filmfestivals ARCTIC OPEN in russischer Sprache mit englischen Untertiteln statt.
🖇️ FSK: 18+
📲Anmeldung
#filmfestival#kino#drama#krimi#sommer#berlinkino
Am 20. Januar um 19:00 Uhr wird die Familienkomödie „Das Feld der Wunder“ in russischer Sprache gezeigt.📽️
🌞 Jeden Sommer versammelt sich eine Gruppe von Kindern in ihrem geheimen Versteck mitten zwischen den hohen Maisstängeln eines alten Ferienorts. Es kursiert die Legende von den Schätzen einer Fürstin, die vor Napoleon geflohen ist, und der Traum vom Abenteuer wird Wirklichkeit, als die neue Schülerin Katja auftaucht: ihr Vater, ein Geschäftsmann, plant, das Feld zu kaufen, um dort einen Baumarkt zu errichten. Die Kinder schließen sich zusammen, um ihren heiligen Ort zu verteidigen.
Meldet euch an und kommt ins Filmtheater im Russischen Haus vorbei!🫶🏻
#kino#komödie#familienfilm#sommer#jugend#kindern