Как разделить строку с 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
· · • • • •🎄• · · NAVIDAD · · •🎄• • • • · ·
Tazas decoradas para regalar en navidad
Este es el regalo perfecto para los amantes del #café. Una taza es algo que siempre viene bien, pero si una te parece poco, atrévete con un juego de 4 o 6 tazas. Te recomiendo elegir dos colores básicos y jugar con ellos para decorar las tazas. En la foto del ejemplo han utilizado el color blanco y el gris topo para hacer este juego de tazas. En unas han hecho puntos de diferentes tamaños y diferentes formas y en el resto de las tazas han elegido un motivo geométrico con rayas en zigzag entrecortadas. ¿Os gusta esta idea?
· · • • • • • · · · · • • • 🎄• • • · · · · • • • • • · ·
· · · • • • • •❄️• · · CAFÉ· · •❄️• • • • • · · ·
¡Qué rico está el café! Una costumbre muy arraigada en nuestra sociedad que sienta tan bien… Y, además, tiene múltiples beneficios. Y más a primera hora de la mañana, cuando se absorben mejor sus beneficios por el organismo, a la vez que te ayuda a activarte y ponerte en marcha. No te prives de sus beneficios y, sin excederte, disfruta de tomar café por la mañana.
#cuidado_personal
#consejos
#café
· · • • • • • · · · · • • • ☃️• • • · · · · • • • • • · ·
Hola me encontré un dato curioso y me gustaría compartirlo.
📌Después de tanta aceptación y con el objetivo de que sea una celebración unificada y que se promueva, aún más, su consumo, la Organización Internacional del Café (OIC) decretó el 1ro de octubre como el Día Internacional del Café, y además de decretar un único día para esta festividad, desde la organización afirman que la celebración busca “otorgar reconocimiento a los millones de personas de todo el mundo que trabajan duro para crear la bebida que tanto nos gusta”.
#café☕#fechas_para_celebrar#datos_curiosos
· · · • • • • •🌼• · · CAFÉ· · •🌼• • • • • · · ·
Es como un pequeño ritual. Hacemos una taza de café, bebemos nuestros cafés y tiramos la bolsita de café o el filtro. Sin embargo, la próxima vez deberíamos saltarnos ese paso final. Los posos de café son aparentemente útiles para muchas tareas domésticas. ¡No tires los posos de café! Puedes usarlos para estas 7 tareas del hogar
#remedios#consejos#limpieza#café
· · • • • • • · · · · • • • 🍃• • • · · · · • • • • • · ·