Как разделить строку с 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
🌸XOTIN-QIZLAR HAYOTIGA E’TIBOR – BUXORODA NAVBATDAGI UCHRASHUV 🌸
📍 “Temiryo‘lkargo” AJ Buxoro filialida xotin-qizlar bilan ochiq muloqot tarzidagi uchrashuv bo‘lib o‘tdi.
👩💻 Tadbirda Xotin-qizlar masalalari bo‘yicha maslahat kengashi boshlang‘ich tashkiloti raisi Nargis Kirgizova hamda ma’naviy-ma’rifiy masalalar bo‘yicha mas’ul xodim Guli Nigor Avazova ishtirok etib, filialda faoliyat yuritayotgan xotin-qizlar bilan suhbatlashishdi. Ularning ish faoliyatlari, ish joyida yaratilgan qulayliklari bilan tanishishdi.
💬Uchrashuvda:
▪️ Ayollarni qiynayotgan muammolar tinglandi;
▪️ Ish joyidagi sharoitlar, ijtimoiy qo‘llab-quvvatlash masalalari muhokama qilindi;
▪️ Taklif va tashabbuslar eshitildi.
🎯 Tadbirning asosiy maqsadi – xotin-qizlarning faolligini oshirish, ularning mehnat va ijtimoiy hayotdagi ishtirokini yanada kuchaytirishdir.
✅ Uchrashuv samimiy muhitda o‘tdi va ishtirokchilarda ijobiy taassurot qoldirdi.
#Temiryulkargo#BuxoroFiliali#XotinQizlar#AyollarFaolligi#Manaviyat#Muloqot
https://t.me/utycargo
utycargo.uz
📱facebook /📱x.com /📱web sayt/📱linkedin.com/📱instagram
“Qaynonam – onam mening, kelinim – bolam mening” oyligi doirasida “Temiryo‘lkargo” AJ xotin-qizlari uchun davra suhbati tashkil etildi.
📖 Suhbatda O‘zbekiston Yozuvchilar uyushmasi a’zosi, shoira va yozuvchi, II darajali “Sog‘lom avlod uchun” ordeni sohibasi Ma’mura Zohidova ishtirok etdi.
✨ Tadbir davomida oilaviy qadriyatlar, avlodlar o‘rtasidagi mehr-oqibat, ayollarning jamiyat va oila hayotidagi o‘rni haqida samimiy fikrlar bildirildi. Bundan tashqari, oila jamiyatning eng kichik va muhim bo‘g‘ini ekanini ta’kidlab, undagi ayollarning o‘rni, qadri, ayoli oqila bo‘lgan oila, jamiyat, davlatda hamisha barqarorlik, rivojlanish bo‘lishini aytib o‘tdi.
Shoira o‘z ijodidan namunalar o‘qib, ayollarga bag‘ishlangan she’rlar orqali ishtirokchilarga ruhiy ko‘tarinkilik ulashdi.
💬Shuningdek, ishtirokchilar ma’ruzachiga o‘zlarini qiziqtirgan savollar bilan murojaat qilib, o‘zaro fikr almashishdi.
Xotin-qizlar bilan kechgan bu iliq muloqot o‘zaro hurmat, mehr va qadriyatlarni yanada mustahkamlashga xizmat qildi.
#Temiryolkargo#Xotinqizlar#MamuraZohidova#QaynonamOnamMening#AyollarFaolligi#OilaQadriyati#TemiryolkargoAJ
https://t.me/utycargo
utycargo.uz
📱facebook /📱x.com /📱web sayt/📱linkedin.com/📱instagram