Как разделить строку с 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
#CHESS/USDT analysis :
#CHESS is currently in an uptrend, consistently making higher highs (HHs) and higher lows (HLs), while finding support along the trendline. A breakout above the counter-trendline is anticipated, which will lead to a test of previous highs.
TF : 1D
Entry : $0.1945
Target : $0.2730
SL : $0.1586
#CHESS/USDT analysis :
#CHESS is currently going through a correction phase and retracing back to the 200 EMA before continuing its bearish move. The price is bouncing back from the support line and is expected to test the 200 EMA.
TF : 1h
Entry : $0.1358
Target : $0.1419
SL : $0.1315
#CHESS (Binance Futures and Spot)
✅Sub $10 million market cap coin
✅Fully bottomed
✅Loking exactly like MYX at $1, before making a 1800% move to $18
CHESS is an easy 10x move, grabbing a big bag here below $0.05
#CHESS (Binance Futures and Spot)
✅Sub $10 million market cap coin
✅Fully bottomed
✅Loking exactly like MYX at $1, before making a 1800% move to $18
CHESS is an easy 10x move, grabbing a big bag here below $0.05
LONGING $CHESS HERE
Exchanges: Binance (Spot and Futures)
#CHESS is not only a gem, it’s what we call a once in a lifetime trade. Fully bottomed, momentum stronger than anything we’ve seen, and an easy short term target at $0.25 - $0.5. Buy it below $0.045 while you can
Entry: Below 0.045
Targets: 0.047 - 0.049 - 0.052 - 0.059 - 0.072 - 0.095 - 0.120 - 0.142 - 0.231 - OPEN
SL: Below 0.034