Как разделить строку с 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
A very happy International Women's Day to all from the Russian Foreign Ministry!
Dear women, colleagues, loved ones and family — we wish you all the best ❤️
May you enjoy happiness and good health 💐
#IWD2024
Happy #InternationalWomensDay
We recognise all women actively contributing to the strengthening of Nigeria's health security!
We appreciate all women whose resilience and expertise drive positive change and accelerate progress in making our communities healthier, stronger, and more vibrant.
#IWD2024
📌 Did you know that you can use the IRAS Relief Checker to find out more about the tax reliefs and/or rebates you may be qualified for?
Meet working mum Boon Hui, who is no stranger to the hectic, fast-paced life of the media industry. She’s thankful that despite the demanding schedule, her parents can help manage her teenage boys while she’s at work.
She’s also appreciative of the tax reliefs and rebates which have considerably lightened the family’s financial load.
This #internationalwomensday, we’d like to honour the strong women, families, friends and allies in our lives – for the seen and unseen labour they’ve carried at home and at work to help make our lives a little lighter. ❤
#iwd2024
🙋🏻♀️ Huquqlari himoyalangan va imkoniyatlarga ega ayollar O‘zbekiston🇺🇿 farovonligining asosidir!
8️⃣ Xalqaro xotin-qizlar bayrami muborak bo'lsin!
#WomensDay#IWD2024#8mart
🎉 Xalqaro xotin-qizlar kuniga tayyormisiz?
🤔 Qani, erkak kishini ilhomlantirib, hayoti va ishini yaxshilashga qodir ayol kimligini bilaylikchi!
✅ Bugun savolimizga Diyor Mirzaahmedov, O'zbekiston marketing assotsiatsiyasi raisining javobini e’tiboringizga taqdim etamiz.
—
#WomensDay#InspireInclusion#InvestInWomen#IWD2024