Как разделить строку с 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
🔰Airdrop: Ebees
💸Value: 8000 #EBS worth of ($12)
🪐Referral: 2000 $EBS for Each ($3)
⏳Distribution Date: After TGE
💎Ratings: ⭐️⭐️⭐️⭐️⭐️
🔗Airdrop Link: https://t.me/EbeesAirdropRound2Bot
Note: Airdrop will end on 5th September and rewards will be distributed to the winners TRC-20 wallet on after .
TGE September 6th 2022
Disclaimer: Please do your own research (DYOR) before joining to any airdrops project, also airdrop is 100% free. Don't send any fee or penny for receiving airdrop tokens. Also we don't recommend you to invest in any new projects, just join airdrop for free
#EBS Television founder Aman Fissehatsion dies
Aman Fissehatsion, founder and Chief Executive Officer of EBS Television, has died after receiving medical treatment for an illness, the station announced today, 11 February 2026.
In a statement issued Wednesday, EBS Television said Aman “played an irreplaceable role in the growth of #Ethiopian media and the success of EBS.” The station described him as “a man of outstanding vision,” adding that while his passing represents a loss to both his family and the institution, “the vision of Aman Fissehatsion will continue.”
The management and staff of EBS Television also expressed what they described as deep sorrow over his death.
Prime Minister #Abiy Ahmed (PhD) extended condolences following the announcement. In a message posted on his official Facebook page, the Prime Minister said Aman was “one of those who played a crucial role in the development of Ethiopia’s private media.”
https://www.facebook.com/share/p/189cm3oGQX/
#java#ai#apache_kafka#aws#azure#cloud#cloud_first#cloud_native#ebs#gcp#kafka#llm#messaging#minio#s3#serverless#spot#streaming
AutoMQ provides a cloud-native alternative to Apache Kafka that runs on S3 storage, cutting costs by up to 90% while enabling instant scaling and eliminating cross-zone traffic fees. It offers high reliability, serverless operation, and full Kafka compatibility, making it easier and cheaper to manage large-scale data streaming without sacrificing performance or features.
https://github.com/AutoMQ/automq