Как разделить строку с 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
Гугл проиграл аппеляцию против Epic Games, решение остается прежним — приложениям в гуглплей должно быть разрешено делать маркетплейсы и свой биллинг. Помню, многие поначалу сомневались, что Epic сможет добиться в судах хоть чего-то, а #battleroyale все идет ...
https://www.bloomberg.com/news/articles/2025-07-31/epic-games-win-over-google-in-fortnite-fight-upheld-on-appeal
Продолжается #battleroyale: напомню, недавно Epic отправили на публикацию Fortnite в американский аппстор. Ну, Эппл, разумеется, отклонил заявку. Теперь ответный шаг — Epic заявили, что Fortnite для iOS будет отключен по всему миру, пока эппл не передумает.
Думаю, для эппл довольно неожиданно, что в эту игру могут играть двое, хотя бой, конечно, неравный.
https://www.theverge.com/news/668232/fortnite-ios-unavailable-worldwide-apple-epic
#battleroyale Эпик говорит, что Эппл удалил их разработческий аккаунт, без него они не могут сделать ни одной программы для Mac или iOS. И, как следствие, не смогут запустить свой стор.
https://www.theverge.com/2024/3/6/24092158/epic-apple-developer-account-terminated-digital-markets-act-alternative-ios-app-store
Epic получили от эппла письмо, где говорится, что СЕО Эпика в Твиттере публично ругает Эппл. Поэтому аккаунт отозван, и вообще, эпик участвует в «глобальных усилиях по подрыву» правил Эппл.
https://9to5mac.com/2024/03/06/epic-games-dev-account-dead/
🎯 PUBG Mobile – ADC GameFest 2025
O‘z mahoratingizni ko‘rsatib, ADC GameFest 2025 chempioni bo‘lishga tayyormisiz? 🔥 PUBG Mobile turniri sizni kutmoqda!
🎮 Jang maydoniga tushish va g‘alaba qozonish vaqti keldi! Eng kuchli o‘yinchilar finalga chiqadi va sovrinli o‘rinlar uchun kurashadi!
💰 Ishtirok badali – 20,000 so‘m
Ro‘yxatdan o‘tish: 📞 742261078
Telegram:
📺@admofadc
O‘yinchilarga omad! Joylar cheklangan – shoshiling!
📱Telegram | 📱Instagram | 📱Facebook | 📱TikTok | 📱YouTube | 📱Website
#ADCGameFest#PUBGMobile#ADC2025#BattleRoyale#Esports