Как разделить строку с 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
🌟Job Opportunity: Research Specialist 🌟
The #CARECInstitute invites applications for the position of Research Specialist. Applicants should be nationals of the People’s Republic of China and meet the qualifications and requirements stated in the Terms and Reference (TOR).
📌 Application Procedures:
Applications should be emailed to Jia Ni ([email protected]) by 7:00 p.m., 11 October 2024 (Friday), Beijing time.
📢CAREC Institute is an equal-opportunity employer and encourages women to apply. Only short-listed candidates will be contacted.
❗Important: Candidates are required to certify that all information provided on any employment application form, resume, or CV is complete, true, and accurate. Information may be verified, and any misrepresentation of facts may be cause for dismissal, regardless of when it is discovered by the CAREC Institute.
For more information, visit: https://www.carecinstitute.org/news/job-advertisement-a-research-specialist/
🌍✨ Важные новости! 27-28 августа 2024 года Алматы, Казахстан, станет центром обсуждения климатических проблем на Восьмом Форуме по развитию аналитических центров ЦАРЭС (CTTDF).
🔍 Тема форума этого года – «Климатический вызов: мышление за пределами границ для коллективных действий».
Мы будем искать способы совместного решения климатических вызовов, улучшения экологических политик и поиска инновационных решений для устойчивого будущего.
📢 Участвуйте в обсуждениях, исследуйте новые идеи и помогите создать мир, устойчивый к изменению климата!
Следите за новостями, чтобы получить более подробную информацию и зарегистрироваться. Не упустите свой шанс стать частью перемен! 🌿🚀
Для подробной информации о форуме, перейдите на сайт.
#CTTDF2024#ClimateChange#CARECInstitute
🚨 3 DAYS TO GO! 🚨
CAREC Institute’s 5th Annual Research Conference Begins in Just 3 Days! Join us May 29-30, 2025, in Islamabad, Pakistan, for a pivotal discussion on “CAREC Connectivity: Promoting Trade and Trade Facilitation.” 🌍✨
🔹 Why Attend?
✅ Expert insights on trade, transit & green infrastructure
✅ Networking with policymakers, researchers & industry leaders
✅ Shaping the future of regional connectivity in Central & South Asia
Co-hosted with Islamic Development Bank (IsDB), Pakistan Single Window (PSW), IRU, PIDE, SDPI, ECOSF & more, this is your chance to be part of the change!
📅 Save the date!
📍 Islamabad, Pakistan
📌 Details & registration:https://lnkd.in/gD2GSgC8
Don’t miss out—let’s drive progress together! 🚀
#CAREC2025#TradeFacilitation#RegionalConnectivity#CARECInstitute#Pakistan#ResearchConference