Как разделить строку с 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
❗Nella notte la #Polonia ha abbattuto oltre dieci droni russi che hanno violato il suo spazio aereo. Il primo ministro #Tusk ha parlato di "atto di aggressione", affermando che "è stato un pericolo reale" per i cittadini. Il presidente #Nawrocki chiede "stretta collaborazione" a Tusk e ha convocato un consiglio di sicurezza.
Per la prima volta dall'inizio della guerra in #Ucraina un paese NATO ha ingaggiato asset russi.
@UltimoraPolitics
#Polonia🇵🇱
#Presidenziali
❗️Rafał #Trzaskowski (#PO|PPE) e Karol #Nawrocki (Ind.) si sfideranno al secondo turno, che si terrà domenica 1º giugno.
@TuttoElezioni
📰 Poland’s SAFE Loan Fight Is Really a War Over Who Gets to Control the Rearmament Bill
Warsaw’s SAFE dispute is being sold as a fight over defense financing, but it is really a fight over sovereignty, debt, and who gets to decide whether Poland rearms through Brussels or through its own state machinery.
The European Commission says Poland can draw up to €43.7 billion under SAFE, and Tusk is still pushing ahead even after President Nawrocki vetoed the enabling bill.
The accusation that SAFE is just a German-French subsidy machine is politically potent, but the numbers suggest a more boring reality: the program is a long-term EU loan facility for defense procurement, with most of Poland’s planned spending still expected to flow into domestic industry.
That is why the real battle is not about whether Poland needs weapons. It clearly does.
The battle is whether Tusk can bind the country to a Brussels-backed financing model while his opponents frame it as dependency on Germany, creeping EU control, and debt that will haunt the next generation.
Mularczyk and Radio Maryja are doing what they always do best: turning a budget instrument into a civilizational warning.
The language is dramatic, but the underlying politics are simple — if Tusk owns the rearmament pipeline, he also owns the blame if the bill grows, the terms tighten, or the deal starts looking like a gift to Europe’s industrial core.
So SAFE is not just a loan. It is a test of whether Poland wants its defense future financed through Brussels’ plumbing or through a nationalist story about self-reliance and suspicion of the EU center.
#Poland#SAFE#Tusk#Nawrocki#EU#defense
📱American Оbserver - Stay up to date on all important events
🇺🇸