Как разделить строку с 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
📺 Paramount Netflix’ning Warner Bros’ni sotib olishini to‘xtatish uchun studiyani o‘zi xarid qilishga kirishdi
📈Paramount, Netflix taklif bergan paytda, Warner Bros aksiyalariga har biriga $27,75 o‘rniga $30 taklif qilib, raqobatga kirishdi.
💸 Umumiy bitim qiymati $108 milliard deb baholanmoqda — bu Netflix taklifidan $18 milliard ko‘proq.
ℹ️ Eng muhim jihati shuki, Paramount taklifni Warner Bros. Discovery aksiyadorlariga bevosita, kompaniya kuzatuv kengashini chetlab o‘tgan holda yubordi. Agar aksiyadorlar ushbu taklifni ma’qul ko‘rishsa, Netflix bilan bitim avtomatik ravishda bekor bo‘ladi.
Ushbu e’londan so‘ng:
• Paramount aksiyalari 4% gaoshdi,
• Warner Bros — 6% ga ko‘tarildi,
• Netflix aksiyalari esa 3% ga pasaydi.
➡️#netflix#warnerbros#paramount | Birinchi IT-Blog
🇺🇸Warner Bros. Joins the Fight: Copyright Lawsuit Against Midjourney
Warner Bros. has filed a lawsuit against Midjourney, accusing the AI platform of willfully generating images and videos featuring its iconic characters, including Superman, Batman, Bugs Bunny, Daffy Duck, and Tom & Jerry. The studio alleges Midjourney removed safeguards that previously blocked users from creating IP-infringing videos, calling the company’s approach a “brazen” disregard for copyright law.
The lawsuit mirrors recent actions by Disney and Universal, represented by the same legal team, asserting that AI-generated outputs closely resembling copyrighted characters violate intellectual property rights. Studios argue that Midjourney could maintain its service while enforcing guardrails to prevent infringement, while Midjourney’s lawyers accuse the companies of hypocrisy for opposing “industry standard” AI practices while seeking to benefit from AI’s potential.
#AIRegulation#CopyrightLaw#AIandIP#WarnerBros#Midjourney#AIEthics#AICompliance
✨Компания Warner Bros. анонсировала кулинарное шоу «Гарри Поттер: Волшебники выпечки»
🍰 Участники будут соревноваться в создании десертов, вдохновленных книгами Джоан Роулинг и их экранизациями. Ведущими шоу станут Джеймс и Оливер Фелпс, сыгравшие близнецов Фреда и Джорджа Уизли.
#ГарриПоттер#ВолшебникиВыпечки#WarnerBros#КулинарноеШоу#ДжоанРоулинг#ДжеймсФелпс#ОливерФелпс
СТОП! СЛИТО.💦