Как разделить строку с 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
🔒#Seguridad || Adriana Arroyo, hermana de Steven Medina, fue atacada por sicarios en el sur de Guayaquil el pasado viernes.
Los detalles ⬇️
https://www.radiopichincha.com/comite-desaparicion-forzada-asesinato-familiar-victima-caso-malvinas/
🔒#Seguridad || Violar la restricción nocturna no solo puede terminar en detención inmediata, sino también en procesos judiciales por desacato con penas de entre uno y tres años de prisión.
Los detalles ⬇️
https://www.radiopichincha.com/tres-prision-incumplir-toque-queda-ecuador/
🔒#Seguridad || La medida propuesta por el Gobierno Nacional arranca hoy (3 de mayo de 2026) a las 23:00 y se extenderá hasta el próximo 18 de este mes.
Los detalles ⬇️
https://www.radiopichincha.com/abc-toque-de-queda-quito/
🔒#Seguridad || Adriana Arroyo, hermana de Steven, torturado y asesinado en 2024, recibió disparos en la calle tercera de Las Malvinas en Guayaquil.
Los detalles ⬇️
https://www.radiopichincha.com/hermana-mayor-uno-de-ninos-caso-cuatro-malvinas-asesinada-guayaquil/
🔒#Seguridad || Las instituciones de educación superior deberán tomar medidas similares para resguardar a los estudiantes, profesores y personal administrativo.
Los detalles ⬇️
https://www.radiopichincha.com/toque-de-queda-jornadas-nocturnas-en-instituciones-educativas-deberan-concluir-a-las-2130/
🔒#Seguridad || En Machala, Buena Fe, Guayaquil y Quito, los sicariatos dejaron una huella trágica en medio del feriado.
Los detalles ⬇️
https://www.radiopichincha.com/hechos-violentos-feriado-resumen-nacional-urgente/
🔒#Seguridad || La investigación se centrará en los mensajes, llamadas y archivos guardados en los celulares, que podrían revelar la coordinación previa del asalto.
Los detalles ⬇️
https://www.radiopichincha.com/juez-autorizo-extraer-informacion-celulares-diablito-lara-asalto-armado/
🔒#Seguridad || El presidente Daniel Noboa decretó toque de queda nocturno en nueve provincias. La medida regirá del 3 al 18 de mayo, de 23:00 a 05:00. Solo podrán circular servicios de salud y fuerza pública.
Los detalles ⬇️
https://www.radiopichincha.com/gobierno-oficializa-toque-queda-nocturno-nueve-provincias/
🔒#Seguridad | El juez dispuso la intervención de defensores públicos para evitar nuevas postergaciones dentro de este proceso.
Los detalles 🔽
https://www.radiopichincha.com/caso-blasti-abril-audiencia-droga-empresa-familia-noboa/
🔒#Seguridad | Los crímenes ocurrieron en las ciudades costeras de Manta, Portoviejo, Chone, Machala y Santa Rosa.
Los detalles 🔽
https://www.radiopichincha.com/fin-semana-terror-15-personas-asesinadas-ataques-armados/
🔒#Seguridad | El cadáver fue encontrado en los asientos traseros de un carro abandonado en la ciudadela La Saiba. La Policía investiga las causas del fallecimiento.
Los detalles 🔽
https://www.radiopichincha.com/hallan-hombre-sin-vida-dentro-vehiculo-sur-guayaquil/
🔒#Seguridad | La Policía señaló que el bus no tenía las cámaras activadas, lo que ha dificultado identificar a los criminales.
Los detalles 🔽
https://www.radiopichincha.com/delincuentes-asesinaron-pasajero-bus-quevedo-balacera-manta/