Как разделить строку с 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
🏴☠️ El gerente general de los Piratas, Ben Cherington, dice que ahora tienen más flexibilidad que nunca y planean explorar intercambios y la agencia libre para mejorar el equipo.
¿Los Pirates están a punto de tener una temporada baja activa? 👀
#️⃣#Piratas
🗞 | t.me/MLB_Daily
🏴☠️ Los aficionados de los Pirates se reúnen cada año para escuchar la transmisión por radio de su victoria en el Juego 7 contra los Yankees en la Serie Mundial de 1960.
#️⃣#Piratas
🗞 | t.me/MLB_Daily
👀🏴☠️ Un compañero de equipo de Paul Skenes dice que el lanzador dominante preferiría no estar en Pittsburgh y quiere ser un Yankee.
🗣️ "Confía en mí", le dijo el jugador a Randy Miller de NJ dot com, "él quiere jugar para los Yankees. Lo he escuchado decirlo varias veces."
🗽 Esto, por supuesto, es motivo de discusión debido a lo exitoso que ha sido Skenes, en contraste con la inutilidad y las temporadas perdedoras de los Pirates año tras año.
🏴☠️ Miller le preguntó al gerente general de los Pirates, Ben Cherington, sobre este comentario, a lo que Cherington dijo que entiende el sentimiento, pero que Skenes, quien está bajo control del equipo por 4 años más, será un Pirate en 2026.
#️⃣#Skenes#Piratas
🗞 | t.me/MLB_Daily
🏴☠️🏴☠️ Paul Skenes tiene 13 derrotas en 55 aperturas en la MLB y los Pittsburgh Pirates anotaron un total de 13 carreras en esos 13 juegos.
📊 Codify
#️⃣#Skenes#Piratas#Stats
🗞 | t.me/MLB_Daily
💥🏴☠ Konnor Griffin obtiene un contrato de nueve años y 140 millones de dólares de los Piratas. Eso rompe el récord del contrato más grande antes de hacer un debut en la MLB.
✅ Además lo llamaron a MLB hoy también.
#Piratas#KGriffin
🗞 | t.me/MLB_Daily
🏴☠️🤝 Según múltiples informes, incluidos los del insider de MLB Network, Jon Heyman, los Piratas y el lanzador derecho José Urquidy han acordado un traspaso.
#️⃣#Piratas#Urquidy
🗞 | t.me/MLB_Daily