Как разделить строку с 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
🌹🌼 Bienvenido #marzo🌻🌺
🥳 Muchas felicidades 🎊
para todos los
♓ Piscis y ♈ Aries
que cumplen
años este mes
Acá les dejamos una ✨#frase motivacional✨🤲💖
Si tienes el poder de hacer feliz a alguien, hazlo. El mundo necesita más de eso.
Y recuerden que si hacen un pedido en su cumpleaños reciben un DESCUENTO de hasta el 10% 🎂
Con el reporte para el lunes 02 de #marzo, el dólar oficial abre el nuevo mes consolidando la tendencia alcista de febrero y quedando a tan solo céntimos de la barrera de los 420 bolívares.
📊Análisis 02-Mar (Publicado hoy)
* USD: 419,98 Bs. (+2,63 Bs.) 📈
* EUR: 495,60 Bs. (+2,49 Bs.) 🚀
* CNY: 61,24 Bs.
* RUB: 5,44 Bs.
@DolarBCV
📈Corte Semanal (Lun 23-Feb al Lun 02-Mar)
* Lunes 23-Feb: 405,35 Bs.
* Lunes 02-Mar: 419,98 Bs.
* Variación de lunes a lunes: +14,63 Bs. (+3,61%) 🚩
Clave: El ritmo de devaluación no da tregua al iniciar marzo. El incremento de hoy (+0,63%) mantiene la inercia con la que cerró febrero. Por su parte, el Euro ya se ubica por encima de los 495 Bs., lo que sugiere que la barrera de los 500 bolívares podría ser alcanzada esta misma semana si persiste el ajuste promedio de 2 a 3 bolívares diarios.
#dolar
#euro
#noticias