Как разделить строку с 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
Maria #Machado ha consegnato il suo premio Nobel per la pace a Donald #Trump, riconoscendogli l'impegno "nella difesa della libertà e dei valori democratici in Venezuela" durante un incontro alla Casa Bianca.
@UltimoraPolitics24
La portavoce della Casa Bianca ha confermato che giovedì Donald #Trump incontrerà la leader dell'opposizione venezuelana Maria Corina #Machado.
@UltimoraPolitics24
Questa mattina Papa #LeoneXIV ha ricevuto oggi in udienza privata, in Vaticano, María Corina #Machado, leader dell’opposizione in #Venezuela e Premio Nobel per la Pace. Lo si apprende dal bollettino della Sala Stampa della Santa Sede.
Leader del movimento Vente Venezuela, è da anni una delle voci più rilevanti nella denuncia delle violazioni dei diritti democratici nel suo Paese, la sua attività politica l’ha resa un simbolo della resistenza civile contro il regime del presidente venezuelano Nicolás Maduro, costringendola a periodi di clandestinità e all’esilio forzato.
Machado è fuggita dal Venezuela per poi essere a Oslo in occasione dell’assegnazione del Nobel, lo scorso dicembre. Dopo il sequestro e il trasferimento a New York di Maduro, il presidente Trump ha escluso che Machado possa subentrare come leader del Paese. L’udienza con Papa Leone XIV, avvenuta secondo quanto trapela su richiesta della stessa Machado, si inserisce in questo quadro di forte incertezza politica, a pochi giorni dall'incontro che la leader dell'opposizione avrà alla Casa Bianca con Trump.
🇩🇴⚾️ La lista del equipo de la República Dominicana para el WBC está empezando a tomar forma.
🟡🟡 Manny Machado y Fernando Tatis Jr confirmaron su participación con el equipo.
#️⃣#WBC26#TeamDominicana#TatisJr#Machado
🗞 | t.me/MLB_Daily
#Venezuela
Il Comitato norvegese per il Nobel ha deciso di assegnare il Nobel per la Pace a María Corina #Machado (#Vente|Destra), ex deputata e leader dell'opposizione venezuelana, “per il suo instancabile lavoro nella promozione dei diritti democratici per il popolo venezuelano e per la sua lotta per raggiungere una transizione giusta e pacifica dalla dittatura alla democrazia”.
@OsservatorioEsteri
María Corina #Machado annuncia il ritorno in Venezuela e ringrazia Donald #Trump per la cattura di Nicolás #Maduro, definendola "un passo enorme per l'umanità" e offrendo il Nobel a Trump. Critica Delcy #Rodríguez e promette un Venezuela libero.
@UltimoraPolitics24