Как разделить строку с 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
#FXS/USDT analysis :
#FXS has broken below the 200 EMA and the support zone. It is advisable to wait for a price retest of this zone for a potential short entry, as the price is anticipated to decline further, targeting lower levels.
TF : 4h
Entry : $3.455
Target : $2.400
SL : $3.945
#FXS/USDT analysis :
#FXS has successfully broken out and retested the swing high resistance following the breakout of the trendline in an established uptrend. The price is expected to sustain its bullish momentum and aim for previous highs.
TF : 30min
Entry : $4.762
Target : $5.080
SL : $4.526
#FXS/USDT analysis :
#FXS is currently in a downtrend and is expected to maintain its bearish momentum. For a short entry, wait for the price to break the current support zone, entering on a break below the $1.814 level. The previous lows will serve as target levels.
TF : 15min
Entry : $1.814
Target : $1.797
SL : $1.826
#FXS/USDT analysis :
#FXS is in a downtrend, forming lower lows (LLs) and lower highs (LHs) structure. The price is currently trading in the resistance zone near the 200 EMS. It is expected to be rejected from that area and continue its bearish momentum.
TF : 30min
Entry : $1.734
Target : $1.651
SL : $1.792