Как разделить строку с 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
L’UE si prepara a bocciare l’uso del golden power da parte del governo italiano contro l’OPS di #Unicredit su Banco Bpm. Secondo Bloomberg, Bruxelles contesterà formalmente le misure adottate dall’esecutivo.
@UltimoraPolitics
#Italia#Germania#USA
È scoppiato in questi giorni il caso #Unicredit: la banca ha infatti annunciato che la sua quota in #Commerzbank (importante banca tedesca) è ora al 21%, grazie all'acquisto di uno strumento finanziario che rappresenta circa l'11,5%, sommato alla partecipazione del 9,5% precedentemente acquisita in due tranche: metà sul mercato e l’altra metà nel corso di un’asta indetta dal Governo tedesco, che, a suo dire, era inconsapevole delle volontà della banca italiana. UniCredit ha chiesto alla #BCE il permesso di arrivare fino al 29,9%, mantenendosi al di sotto del limite che imporrebbe un'offerta pubblica di acquisto obbligatoria.
La reazione del cancelliere tedesco Olaf #Scholz (#SPD|S&D) è stata dura: "Le acquisizioni ostili non sono una buona cosa". Anche i sindacati tedeschi si dichiarano sul piede di guerra per i tagli temuti.
La risposta del Ministro degli Esteri Antonio #Tajani (#FI|EPP) è arrivata a margine dei lavori dell'Assemblea #ONU a #NYC: "In Europa c'è libero mercato, non capisco perché quando qualcuno viene ad acquistare in Italia si dice che siamo in un sistema europeo moderno del mercato unico, se poi un italiano acquista fuori non è più nel mercato unico. Sono certamente iniziative di privati queste, ma legittime, quindi non comprendo perché dovrebbe essere un atto ostile quella di un'impresa italiana che acquista nel mercato europeo. Poi ci sono le norme dell'Unione bancaria, ci sono le norme europee, quindi mi pare che Unicredit le abbia rispettate".
@OsservatorioItaliano
https://x.com/SavinoBalzano/status/1838621376539664486?t=8gFSY8t9sWXZ4AQlOQa87g&s=19
E qui casca l'asino! Il #Cancelliere tedesco #Scholz si è incazzato: #Unicredit ostile su #Commerzbank.
La vicenda dimostra la reale natura di un'#UE fatta per consentire ai più forti di depredare i più deboli: il gioco è ben accetto quando è la #Germania (o la #Francia) a spolparci; no, quando è l'#Italia ad alzare la capoccia.
Insomma, tutti felici e contenti se il nostro Paese fa la parte del supermarket. È per questo che è stato pensato il mercato unico ed è fisiologico che restino spaesati da questo evento assai assai raro.
Avremmo dovuto imbufalirci noi, tante e tante volte e non lo abbiamo fatto: stendiamo un velo pietoso.
Sia chiaro, quella di #OlafScholz è solo una pagliacciata: il vento sta cambiando, se la sta facendo sotto, e prova disperatamente a mostrare qualche muscolo. La verità è che il patriottismo non sanno nemmeno dove sta di casa: è andato a picco col sabotaggio del #Nordstream.
La mia a #5Notizie, #RadioCusanoCampus.