Как разделить строку с 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
💛 Bugun oddiy kun emas.Bu — sen o‘zingni isbotlaydigan kun.
🕊 Kimdir hali “yana 5 daqiqa” deydi…Sen esa “hozir boshlayman” deganlardan bo‘l.
📌 Esingda bo‘lsin:Hayot — kutganlarga emas,harakat qilganlarga jilmayadi.
🌅 Bugun boshqacha yashab ko‘r.Balki aynan shu kun — hammasini o‘zgartirar.
#motivation
🛫@Milliarderlarim
💱#motivation
🫴 "Har bir katta o‘zgarish — kichik bir qadamdan boshlanadi. Harakatdan to‘xtama, orzularing yo‘lida yurishda davom et!"
Do'stlarga ham ulashing
🛫@Milliarderlarim
🔝#motivation
👍 "Kichik qadamlar katta o'zgarishlarga olib keladi."
Agar hozir boshlamasangiz, bir yildan keyin ham shu joyda bo‘lishingiz mumkin. Ammo bugun kichik bir qadam tashlasangiz, bir yil ichida o‘zgarishingiz mumkin.
Shunchaki boshlang. Hozir. Bugun.
Shubha qilsangiz ham, davom eting.
Hech kim sizga ishonmasa ham, o‘zingizga ishoning.
🫶Hayrlı kun yaxshilar!! Barcha maqsadlaringiz gozal tarzda amalga oshsin! 💕
Do'stlarga ham ulashing!
🏆@Milliarderlarim
💱#motivation
🫴 "Har bir katta o‘zgarish — kichik bir qadamdan boshlanadi. Harakatdan to‘xtama, orzularing yo‘lida yurishda davom et!"
Do'stlarga ham ulashing
🛫@Milliarderlarim
🔜#motivation
Harakat – bu orzularni haqiqatga aylantiradigan kuchdir. Boshlamasang – o‘zgarmaydi. Qadam tashla, natija keladi! 💞
Do'stlarga ham ulashing!
🔵@Milliarderlarim
👍#motivation
✔️ Muvaffaqiyat osmondan tushmaydi, u harakat, sabr va ishonch bilan yaratiladi.
✔️ Harakat qilgan odamda har doim umid bor. Harakat to‘xtasa – orzular so‘nadi.
✔️Bugun qilgan mehnating – ertangi muvaffaqiyatingning poydevori.
✔️ Qiyinchiliklar – bu sinov emas, o‘sishga imkoniyatdir.
Hayrlı kun @Milliarderlarim
Bugün sevgi va yutuqlarga boy kun! ❤️
Do'stlarga ham ulashing!
🫴@Milliarderlarim
👀#motivation
O‘zgarish qo‘rqinchli, lekin bir joyda qolish undan ham qo‘rqinchli.
O‘zing uchun harakat qil, ertangi “sen” senga rahmat aytsin!
Do'stlarga ham ulashing
🏆@Biglibrary_uz
#motivation
▶️ O‘z hayotingizning rejissyori bo‘ling!
Hayot – bu sahna, siz esa uning bosh qahramoni va rejissyorisiz. Qanday ssenariy yozsangiz, shunday yashaysiz.
🎬 Orzularingiz – bu filmning eng muhim syujeti. Ularni unutmang!
🎬 Harakatlaringiz – natijani belgilovchi rejissyorlik qarorlaringiz.
Agar boshqalar hayotingizni boshqarishini istamasangiz, kamerani o‘z qo‘lingizga oling! Bugun o‘z orzularingiz sari bir qadam tashlang.
📹
✨
Do'stlarga ham ulashing
👍@Milliarderlarim
#motivation
🙂 Hayrli kun @Milliarderlarim
Keling bugungi kunni 400 ta tabassum kuni deb nomlaymiz! Qani Kim uddalaydi bugün 400 ta tabassumni
🛒 Eng yaxshi tayyorgarlik - bu Ishga kirishish Va boshlash!!
🧾 Orqaga surib yurgan rejalaringizni Bugün Boshlang! HOZİROQ boshlang
❤️
Yurakchani ham bosib qo'ying
🛫@Milliarderlarim
#motivation🩷🩷🩷🩷
Foyda keltirmaydigan ishlarni to'xtating!
Kelajak hozirdan boshlanadi! Hozirdan energiyangizni foydali ishlarga sarflang!
🩷 Reaksiyalarni bosib qo'ying
@Milliarderlarim
🔗#Motivation
🩷 Sen hayotga nimadir bera olsang, Hayot ham senga albatta javob qaytaradi!
Qarang Juda chiroyli jumlalar-a. Meni o'ylantirib qo'ydi. Siznichi? Siz nima angladingiz, kommentlarda yozingchi✍️
@Milliarderlarim