Как разделить строку с 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
👷♀Sizga muvaffaqiyatli boshlanishlar, to'g'ri trayektoriyalar, vakuumda qolib ketmaslikni, illyuminatordan Yer ko’rinishini, va, albatta, uyingiz yonida doimo koʻkalamzor bo’lishini tilab qolamiz🚀
- - - - -
👷Желаем успешных стартов, правильных траекторий, не застревать в вакууме, Земли в иллюминаторе, и конечно же, травы у дома🚀
#knaufuzbekistan#12aprel
🚀✨Kosmonavtlar kuni muborak!✨🚀
Bugun — insoniyat tarixida muhim burilish yasagan sana! 🌍🚀
1961-yil aynan shu kuni Yuriy Gagarin ilk bor koinotga parvoz qilib, insoniyat uchun yangi ufqlarni ochgan edi.
🌌 Koinot — bu faqat yulduzlar emas, balki orzular, jasorat va cheksiz imkoniyatlar ramzi.
Har bir bola qalbida kichik “kosmonavt” yashaydi — u kashf etishni, bilishni va balandlarga parvoz qilishni istaydi.
👩🚀👨🚀 Bizning o‘quvchilarimiz ham kelajakda yurtimiz faxriga aylanishiga ishonamiz!
🌠 Orzularingiz baland bo‘lsin, parvozingiz esa yanada yuksak!
#KosmonavtlarKuni#12Aprel#Koinot#Orzular#Kelajak🚀
🏫Al-Xorazmiy maktabi:
Sifatli ta'lim- mukammal natija!
☎️ +998937091144
+998907861144
+998907871144
📍Manzil: Farg'ona shahar, Yormozor MFY, Sharshara ko'chasi 326-uy
Telegram | Instagram | YouTube | tiktok
#Chilonzor
#KosmonavtlarKuni
#YuriyGagarin
#12Aprel
#Koinot
#IlmFan
Chilonzorda Kosmonavtlar kuni munosabati bilan xotira tadbiri o‘tkazildi
12-aprel — Kosmonavtlar kuni munosabati bilan Chilonzor tumanida joylashgan Yuriy Gagarin monumenti oldida tantanali gul qo‘yish marosimi bo‘lib o‘tdi.
Tadbirda tuman hokimi Saidqahhor Xolxo’jayev, xorijiy davlatlar elchixonalari mutasaddilari va vakillari, tashkilot va muassasalar vakillari, keng jamoatchilik ishtirok etib, insoniyat tarixida yangi davrni boshlab bergan Yuriy Gagarin xotirasiga hurmat bajo keltirdilar.
So‘zga chiqqanlar 1961-yil 12-aprel kuni amalga oshirilgan tarixiy parvoz — Vostok-1 orqali insoniyat ilk bor koinot sari yo‘l olganini alohida ta’kidladilar.
Mazkur voqea nafaqat fan va texnologiya rivojiga, balki butun insoniyat tafakkuriga ulkan ta’sir ko‘rsatgani qayd etildi.
Shuningdek, bugungi kunda O‘zbekistonda ham kosmik sohani rivojlantirish, yosh mutaxassislarni tayyorlash hamda zamonaviy texnologiyalarni joriy etish borasida keng ko‘lamli ishlar amalga oshirilayotgani e’tirof etildi.
Tadbir yakunida ishtirokchilar tomonidan monument poyiga gulchambarlar qo‘yilib, buyuk kosmonavt xotirasi yana bir bor ehtirom bilan yod etildi.
👉👉👉Lavhamizda tadbir jarayonlari
https://t.me/chilonzor_tuman_hokimligi