Как разделить строку с 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
#JASMY/USDT analysis :
#JASMY is currently in an uptrend, trading above the 200-period exponential moving average (EMA). The price is exhibiting bullish momentum and is trading above a significant support zone. The price is expected to bounce back and continue its upward trajectory, resuming the bullish momentum in the near future.
TF : 15min
Entry : $0.05107
Target : $0.05881
SL : $0.04612
#JASMY/USDT analysis :
#JASMY is currently in a downtrend, demonstrating a structure of lower lows (LLs) and lower highs (LHs) below the 200 EMA. The price has broken through the previous support zone, which has now become resistance. Therefore, it is anticipated that the price will continue its bearish momentum and potentially test lower levels. It is advisable to wait for a retest of the zone for a short entry.
TF : 4h
Entry : $0.01827
Target : $0.01601
SL : $0.01980
#JASMY/USDT analysis :
#JASMY has retested the resistance zone twice and been rejected. It's likely to keep going down soon as the price also got rejected from the 200 EMA. The previous lows will be tested.
TF : 1H
Entry : $0.02198
Target : $0.01684
SL : $0.02371