Как разделить строку с 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
E-IPL Bonus Live Free ₹1-₹2000 🔥
Minimum Withdrawal ₹100
Wegar - 5X Free Payment ✅
Link -https://eipl.group
Sign Up Bonus Claim Karlo And Usse Game Play Karo ₹300/₹500 Banake Withdrawal #Free🥳
Fully New Rummy App Loot !! 🔥❤️🔥
Singup Bonus ₹21
Minimum Withdrawal ₹100
➡️Link https://www.ys777.com?chn=eW43NzdfaW5fbnRsYTM=&id=MTI0MDk2NzE2
🔴NOTICE
Ragister Karo Number Bind Karo ₹18 Milga And Bonus Full Use All Game ₹100 Banake #Free Withdrawal lago ✔️✔️
New Casino Website !!
✅
Singup Bonus:-₹100
Min Max Withdrawal ₹1000
Link:-https://www.a2k.vip/?mid=D9ZPYR
➡️Apply Bonus Image Cheak 👇And Play Only Slots Game Complete 30x Wagering And Go Promotion Unlock Bonus Click Karo ₹100 real cash milga usse ₹1000 Banake Withdrawal #Free😄
📌Now you can see that we never fail to deliver you the quality signals you always wanted 😌
This was just 🌊#Free Signals, Real magic happens in our VIP GROUP PREMIUM with daily 5-10 calls like this🤑😎
All loss recovery is just one Step away 👇
☎️Contact Admin Now
@CryptoAngels_Team✅
📱 Whatsapp:https://wa.me/message/FCQOGNWAENWTH1
📌Now you can see that we never fail to deliver you the quality signals you always wanted 😌
This was just 🌊#Free Signals, Real magic happens in our VIP GROUP PREMIUM with daily 5-10 calls like this🤑😎
All loss recovery is just one Step away 👇
☎️Contact Admin Now
@CryptoAngels_Team✅
📱 Whatsapp:https://wa.me/message/FCQOGNWAENWTH1
📌Now you can see that we never fail to deliver you the quality signals you always wanted 😌
This was just 🌊#Free Signals, Real magic happens in our VIP GROUP PREMIUM with daily 5-10 calls like this🤑😎
All loss recovery is just one Step away 👇
☎️Contact Admin Now
@CryptoAngels_Team✅
📱 Whatsapp:https://wa.me/message/FCQOGNWAENWTH1