Как разделить строку с 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
Ҷаласаи Шурои амнияти Ҷумҳурии Тоҷикистон
Дар кори ҷаласа аъзои доимӣ ва аъзои Шурои амният, кормандони дастгоҳи Шурои амният, роҳбарони сохторҳои низомӣ ва мақомоти ҳифзи ҳуқуқу тартибот иштирок намуданд.
Дар ҷаласа вазъи таъмини амну субот, волоияти қонуну тартиботи ҳуқуқӣ, мубориза бар зидди ҷинояткорӣ ва таҳкими қудрати дифоии давлат баррасӣ шуд.
Заседание Совета безопасности Республики Таджикистан
В работе заседания приняли участие постоянные члены и члены Совета безопасности, сотрудники Аппарата Совета безопасности, руководители силовых структур и правоохранительных органов.
На заседании обсуждалась ситуация обеспечения безопасности и стабильности, верховенства закона и правопорядка, борьба с преступностью и укрепление обороноспособности государства.
#ЭмомалӣРаҳмон#ЭмомалиРахмон#EmomaliRahmon#Тоҷикистон#Таджикистан#Tajikistan#Президент#President#Тоҷикон#Таджики#ШуроиАмният#СоветБезопасности#SecurityCouncil
President.tj | Facebook | Instagram | Telegram | X | Youtube
@RusEmbMalta:
🇷🇺🛡️13th International Security Meeting to Be Held in Moscow
📅 On May 27–29, 2025, Moscow will host the 13th International Meeting of High Representatives for Security Issues under the chairmanship of Secretary of the Russian Security Council Sergey Shoigu.
🌍 More than 150 countries from the Global South and East have been invited to participate, along with representatives of the #CIS, #CSTO, #EAEU, #SCO, and over 20 international organizations.
🗂️ The meeting will focus on strengthening international security cooperation. Discussions will cover a broad range of challenges, including terrorism, extremism, transnational crime, drug trafficking, and emerging threats.
🧭 Since 2010, this annual platform has brought together senior security officials to build trust, share expertise, and coordinate efforts on pressing global security issues.
📌 Media accreditation is open until May 20, 2025.
#Shoigu#SecurityCouncil#InternationalMeeting#Moscow2025#GlobalSecurity#Counterterrorism#Multilateralism#CIS#SCO#BRICS#CSTO#EAEU#GlobalSouth