Как разделить строку с 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
🇨🇳 Xitoyda ikkita yo‘lovchi tashuvchi Xpeng dron-samolyoti to‘qnashib, Yerga qulab yonib ketdi
ℹ️ Hodisa avia-shouning mashg‘ulotida bo‘lib o‘tgan, shu sababli atrofda odamlar deyarli bo‘lmagan. Natijada faqat bitta kishi jarohatlangan (u uchuvchimi yo‘qmi aniqlanmagan) — erkak kasalxonaga yetkazilgan va hozir uning hayotiga hech qanday xavf yo‘q.
📅 Ularni sotuvga chiqarish esa 2026-yilda rejalashtirilgan — dron uni tashuvchi maxsus mashina bilan birga ¥2 mln = $281,122 ga sotiladi.
➡️#dron#transport | Birinchi raqamli IT-Blog
*940_с трофеев*
Управление 1.8-2.4 G.
Видео 6.1-6.7 G.
Получая данные от РЭР или с "птиц" врага, постоянно внедряем новые частоты в наши комплексы РЭБ. Необходимо закрывать участок от 1.7 до 2.75 G. Это не считая других диапазонов.
Так и живём...
🇷🇺Мы в МАХ
Инженерный💪фронт
Призрак Новороссии
2025.
🎄rutube🌍vkвидео🌍дзен
#FPV#дрон#dron
Xitoyliklar allaqachon 2049-yilda yashayotgandek!
BYD va DJI "Blade Runner" filmining texnologiyalarini hayotga tatbiq qilib, avtomobillarga shaxsiy razvedka dronini qo‘shishdi. Aynan Ryan Goslingning qahramoni kabi: dron tomdagi maxsus qutidan uchib chiqadi, atrofni havodan kuzatadi, videotasvirga oladi, ko‘rinishni yaxshilaydi va o‘z-o‘zidan qaytib, zaryad oladi.
Dron harakatlanayotgan mashinadan ham uchib chiqishi mumkin – 25 km/soat tezlikkacha. U avtomobilni 54 km/soatgacha kuzatib boradi va batareyasi tugayotganida o‘zi zaryadga qaytadi. Bunday texnologiya uchun 2200 dollar so‘rashyapti.
Harbiylar, baliqchilar, ovchilar yoki ekstremal yo‘llarda yurishga odatlanganlar uchun ideal! Oddiy haydovchilarga esa qanday foydasi bor – hali aniq emas. Balki yo‘l burilishida yashirinib turgan YPH xodimlarini ilgariroq payqash uchun foyda berar? 😅
#Texnologiya#SuniyIntellekt#Avtomobil#Dron
8 regalos con los que los pequeños alucinarán: Dron del Halcón Milenario #HalcónMilenario#StarWars#Dron#Drone
https://www.milideaspararegalar.es/blog/8-regalos-con-los-que-los-pequenos-de-la-casa-alucinaran-estas-navidades/
💻www.milideaspararegalar.es