Как разделить строку с 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
halogenOS - Official | Android 16 | Nothing Phone (2)
✍️ Details:
- Version: 16.2
- Codename: #Pong
- Updated: 26/05/02
- Type: #Vanilla
🔽 Download: Here
🆘 Support : Here
⚙️ Installation: Here
🔖 Tags : #ROM#AOSP#Official#XOS
✍️ Changelog:
- Dimmed mode
- New launcher app drawer design
- Slidable tiles
- Battery charge limit
- Add font customization
- Add centered lockscreen clock style
- Add VRR mode
- April 2026 Security Patch
- Increase Bluetooth sound quality when using AAC or SBC
✍️ Note:
- Firmware is not included, based on NOS B4.0-251226-1110
- ROM is signed by official halogenOS keys. GApps support and PI not guaranteed (only vanilla with Sandboxed Play is officially supported).
🏆 Credits:
- Chandu
- Pong dev team & testers
- halogenOS Community
👤 Maintainer : @N0m4n904
🔔 Updates : @NothingPhone2Updates
💬 Chat : @NothingPhone2
HalogenOS - Official | Android 16 | Nothing Phone (2)
✍️ Details:
- Version: 16.0
- Codename: #Pong
- Initial Release: 25/09/25
- Type: #Vanilla
🔽 Download: Here
🆘 Support : Here
⚙️ Installation: Here
🔖 Tags : #ROM#AOSP#Official#XOS
✍️ Note:
- Kernel is prepatched KSU
- Firmware is not included, latest is recommended
- ROM is signed by official halogenOS keys. GApps support and PI not guaranteed (only vanilla is officially supported).
- Refer to this post for future updates related to the ROM.
🏆 Credits:
- Chandu for Kernel (and DT which served as as a reference)
- Pong dev team & Testers
👤 Maintainer : @N0m4n904
🔔 Updates : @NothingPhone2Updates
💬 Chat : @NothingPhone2
HalogenOS - Official | Android 16 | Nothing Phone (2)
✍️ Details:
- Version: 16.0
- Codename: #Pong
- Initial Release: 18/08/25
- Type: #Vanilla
🔽 Download: Here
🆘 Support : Here
⚙️ Installation: Here
🔖 Tags : #ROM#AOSP#Official#XOS
✍️ Note:
- Kernel is prepatched KSU
- Firmware is not included, latest is recommended
- ROM is signed by official halogenOS keys. GApps support and PI not guaranteed (only vanilla is officially supported).
- Refer to this post for future updates related to the ROM.
🏆 Credits:
- Chandu for Kernel (and DT which served as as a reference)
- @chrome6boy for testing
- Pong dev team
👤 Maintainer : @N0m4n904
🔔 Updates : @NothingPhone2Updates
💬 Chat : @NothingPhone2
AviumUI - Unofficial | Android 16 | Nothing Phone (2)
📝 Details:
- Version: 16
- Build type: #Vanilla
- Device: #Pong
- Released: 27/11/2025
⬇️ Downloads: Here
📖 Changelogs: Here
🖼️ Screenshota: Here
🏷 Tags: #Avium#ROM#Avium#Vanilla#Unofficial
✍️Notes:
- Vanilla build ONLY
- Initial Nothing camera support available
- SukiSU Ultra and SusFS baked in
- OTA updates are planned in the future, however not supported as of now
- Signed with my keys
- Based on Lineage DT, Vendor and Kernel
- Use latest NOS 3 firmware
- If face any bugs report with logs
🏆Credits:
- Deadlylxrd for so much help with building my first ever ROM
- Chandu for DT
- Fabian & HELLBOY for Glyph
👤 Maintainer: @sevo9128
💬 Chat: @NothingPhone2
🔔 Updates: @NothingPhone2Updates
Лучше выбери свой аромат в парфюмированных гелях NOTALONE, которые привлекают любовь!
Vanilla Lovers - влюбленность
Black pepper Neroli- страсть
Bergamot Amber Wood - глубина
#notalone#парфюмированныйгельдлядуша#blackpepper#vanilla#bergamot
LineageOS - Community | A14 | Nothing Phone (2)
✍️ Details:
- Version: 21.0
- Codename: #Pong
- Released: 17/07/2024
🔽 Download : Recovery | Fastboot
⚙️ Installation: Here
📸 Screenshots: Here
🆘 Support: Telegram
🔖 Tags : #ROM#Vanilla#Community#LOS#QPR3#U#NothingPhone2
✍️ Changelog
- Update from NOS 2.6.0
- USB OTG Fixed
- Fixed Status Bar Padding
- Read Notes 👇
✍️ Notes
- Flash These GAPPS to get Gapps with Pixel Launcher
- Stable Signed Build
- Meteoric kernel is baked in with prepatched KSU.
- Dolby Atmos Included
🏆 Credits
- Chandu for base device tree
- HellboyforMeteoric kernel
- Miki, Unluck & Ghost for all help
- Fabian for PA Glyph Implementation
😎 Maintainer: @Kartikey
🔔 Updates: @NothingPhone2Updates
💬 Chat: @NothingPhone2