Как разделить строку с 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
ASTROKNIGHT CARDS | ASTROKNIGHT EXCLUSIVE | ХУГО ВЛАД | ZENLESS ZONE ZERO
by LIVIL
Долгожданная карточка для тех, кто оформлял предзаказ на нендороид Хуго Влада
Все, кто заказал нендороид до выхода карточки обязательно её получат
🌟Условия получения:
— Действует по 30.06.26
— Оформление предзаказа (достаточно оплатить депозит) на нендороид Хуго Влада
— Предзаказ можно оформить только на сайте по 30.06.26!
— Предзаказ через бот закрыт!
— Размер а6
— Высылаться карточка будет вместе с нендороидами
🌟 Товар на сайте: тык
#cards@astroknightshop
ASTROKNIGHT CARDS | ASTROKNIGHT EXCLUSIVE | РАФАЭЛЬ | LOVE AND DEEPSPACE
by —AkiSaari—
— Долгожданная карточка для тех, кто оформлял частичные взносы за нендороид Рафаэля
— Размер а6
— Высылаться карточка будет вместе с нендороидами
— На выбор карточка с подписью и без, о выборе сообщить в @astromanagers
#cards@astroknightshop
ASTROKNIGHT CARDS | ASTROKNIGHT EXCLUSIVE | САЙЛУС | LOVE AND DEEPSPACE
by —AkiSaari—
— Долгожданная карточка для тех, кто оформлял частичные взносы за нендороид Сайлуса
— Размер а6
— Высылаться карточка будет вместе с нендороидами
— На выбор карточка с подписью и без, о выборе сообщить в @astromanagers
#cards@astroknightshop
ASTROKNIGHT EXCLUSIVE | ASTROKNIGHT CARDS | ЧИСА | WUTHERING WAVES
16+
Карточка by RINGEKO
Обратная сторона by —AkiSaari— (будет в комментариях позже)
Условия получения:
— Заказ WuWa от 3000 рублей
— Участвуют только разовые платежи, без суммирования (т.е. покупка на 3000 и больше за раз)
— Действует с 23.03.26 по 06.04.26
— Размер открытка
— Готова карточка будет через 1.5-2.5 месяца {после окончания срока действия карточки}
#cards@astroknightshop
ASTROKNIGHT EXCLUSIVE | ASTROKNIGHT CARDS | АСТРА ЯО | ZENLESS ZONE ZERO
Карточка by RINGEKO
Обратная сторона by —AkiSaari— (будет в комментариях позже)
Условия получения:
— Заказ ZZZ от 3000 рублей
— Участвуют только разовые платежи, без суммирования (т.е. покупка на 3000 и больше за раз)
— Действует с 23.03.26 по 06.04.26
— Размер а6
— Готова карточка будет через 1.5-2.5 месяца {после окончания срока действия карточки}
#cards@astroknightshop
ASTROKNIGHT EXCLUSIVE | ASTROKNIGHT CARDS | ИСКРА | HONKAI STAR RAIL
Карточка by RINGEKO
Обратная сторона by —AkiSaari— (будет в комментариях позже)
Условия получения:
— Заказ Honkai Star Rail от 3000 рублей
— Участвуют только разовые платежи, без суммирования (т.е. покупка на 3000 и больше за раз)
— Действует с 23.03.26 по 06.04.26
— Размер а6
— Готова карточка будет через 1.5-2.5 месяца {после окончания срока действия карточки}
#cards@astroknightshop
ASTROKNIGHT EXCLUSIVE | ASTROKNIGHT CARDS | СКИРК | GENSHIN IMPACT
Карточка by RINGEKO
Обратная сторона by —AkiSaari— (будет в комментариях позже)
Условия получения:
— Заказ Genshin Impact от 3000 рублей
— Участвуют только разовые платежи, без суммирования (т.е. покупка на 3000 и больше за раз)
— Действует с 23.03.26 по 06.04.26
— Размер а6
— Готова карточка будет через 1.5-2.5 месяца {после окончания срока действия карточки}
#cards@astroknightshop
ASTROKNIGHT EXCLUSIVE | ASTROKNIGHT CARDS | ПЕРЛИКА | ARKNIGHTS: ENDIELD
Карточка by RINGEKO
Обратная сторона by —AkiSaari— (будет в комментариях позже)
Условия получения:
— Заказ Endfield от 3000 рублей
— Участвуют только разовые платежи, без суммирования (т.е. покупка на 3000 и больше за раз)
— Действует с 23.03.26 по 06.04.26
— Размер а6
— Готова карточка будет через 1.5-2.5 месяца {после окончания срока действия карточки}
#cards@astroknightshop
ASTROKNIGHT EXCLUSIVE | ASTROKNIGHT CARDS | ВОСКРЕСЕНЬЕ | HONKAI STAR RAIL
Открытка by—AkiSaari—
Условия получения:
— Оформление предзаказа на фигурку Воскресенья (Вер. Live 2025)
* Достаточно оформить депозит для предзаказа
— Действует с 06.03.26 по 10.04.26
— Формат открытки
— Карточка будет высылаться вместе с фигуркой
#cards@astroknightshop
🆕🆕🆕🆕🆕$CARDS is on Fire!
⚡️ Smart entry, big potential
⚡️ Strong community backing
⚡️ Solana ecosystem ka next gem
Chart dekho 📈 — momentum real hai!
Abhi early ho ya late… winners wahi hain jo move karte hain.
💎 Early buyers already locking profits
🌐 Liquidity growing every hour
🕒 Timing is everything — don’t miss out
📊 $CARDS could be the next breakout star
▶️Don’t miss the pump!
🔤🔤
https://web3.okx.com/zh-hans/token/solana/CARDSccUMFKoPRZxt5vt3ksUbxEFEcnZ3H2pd3dKxYjp
CA. CARDSccUMFKoPRZxt5vt3ksUbxEFEcnZ3H2pd3dKxYjp
#Solana#Crypto#CARDS#Pump
🎴Карточки: как стать профессионалом в мире бизнеса с Высшей школой бизнеса и предпринимательства
🏛 Высшая школа бизнеса и предпринимательства при Кабинете министров Узбекистана в карточках рассказала о преимуществах и направлениях обучения.
#GraduateSchool#Cards#Professional#MassMedia
Web-site | Telegram | Facebook | Instagram
https://www.spot.uz/ru/2024/03/27/business-school/