Как разделить строку с 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
News: #Somalia, #South_Africa discuss security, regional stability
Somali President #Hassan_Sheikh Mohamud on Tuesday held a telephone conversation with South African President Cyril #Ramaphosa, during which the two leaders discussed strengthening bilateral relations and expanding cooperation on peace and security, trade and investment, and regional stability.
According to Somalia’s state news agency SONNA, the talks also covered key regional and continental developments, with both leaders reaffirming their commitment to #African solidarity and shared prosperity.
Recently reports indicate that Somalia intensifies diplomatic relations with different countries. Yesterday SONNA reported.that Somalia has signed a defence cooperation agreement with #Qatar, days after formally terminating all existing security and defence arrangements with the United Arab Emirates (#UAE).
The agreement was...
https://web.facebook.com/AddisstandardEng/posts/pfbid0APngK9nL83rpkiaz2ADgk3Fhm1cZKE3Utxx6mMTkWx8RgG7w4yTYz191C3C5g6uAl
#South_Africa deploys soldiers to the streets to tackle organized and violent crime
Soldiers were deployed to the streets of South Africa’s biggest city Wednesday in an effort to help police fight gang violence and illegal mining.
It was the first major deployment since President Cyril #Ramaphosa said in his annual speech to the nation last month that he would use the army against organized crime, which he called the greatest threat to democracy and the country’s economic development.
Soldiers jumped from vehicles and entered apartment blocks as military vehicles moved through the #Riverlea and #Westbury suburbs of #Johannesburg.
Many residents of Riverlea expressed relief to see soldiers deployed to stem the violence.
One resident, Pearl Hilma, told The Associated Press that she supports the crackdown “because there’s lots of gangsterism as well as gunshots every night” in the neighborhood......
https://apnews.com/article/johannesburg-troops-crime-crackdown-president-d92dd6dc8eea76bdf1abd878200379f9
Un nuovo capitolo strategico tra Việt Nam e Sudafrica
La visita di Stato del Presidente sudafricano Cyril Ramaphosa a Hà Nội (23-24 ottobre) segna una svolta storica nelle relazioni tra i due Paesi. Dopo decenni di cooperazione politica ed economica, il Việt Nam e il Sudafrica si preparano a elevare il loro rapporto a Partenariato Strategico entro il 2025, fondato su fiducia politica, sviluppo sostenibile e convergenza multilaterale.
Le radici del legame risalgono alla solidarietà anticoloniale e al movimento afro-asiatico, ma oggi la partnership guarda al futuro: energie rinnovabili, digitalizzazione, infrastrutture, finanza verde e libero scambio con la SACU.
Il Việt Nam si conferma ponte tra Asia e Africa, mentre il Sudafrica punta a rafforzare il proprio ruolo di hub continentale.
Entrambi i Paesi condividono una visione del Sud Globale unito, promotore di un ordine internazionale più equo, basato su cooperazione, legalità e rispetto reciproco.
La dichiarazione congiunta del 24 ottobre non chiude un ciclo, ma ne apre uno nuovo: quello di una cooperazione Sud-Sud più matura, fondata su principi, pragmatismo e ambizioni globali comuni.
#Vietnam#SouthAfrica#Ramaphosa#CooperazioneSudSud#Diplomazia#Geopolitica#ASEAN#Africa#PartenariatoStrategico#GiulioChinappi
https://www.marx21.it/internazionale/un-nuovo-capitolo-strategico-nella-cooperazione-tra-vietnam-e-sudafrica/