Как разделить строку с 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
#IOTA/USDT analysis :
#IOTA bounced off the tested support zone with strong volume. A breakout above the trendline is expected, resuming its uptrend. Watch for a break above the $0.4870 level to consider going long. The outlook remains bullish.
TF : 1H
Entry : $0.4870
Target : $0.6000
SL : $0.4212
#IOTA/USDT analysis :
#IOTA is currently consolidating sideways within the support and resistance zones. The price has recently bounced back from the support zone and is expected to continue its momentum to test the resistance zone.
TF : 1D
Entry : $0.1250
Target : $0.1443
SL : $0.1127
#IOTA/USDT analysis -
#IOTA is in a downtrend on the lower time frame, trading below the 200 EMA. Following a corrective pullback, the price is currently holding the support level. A breakdown of this support has triggered an entry in the price, leading to a continuation of the bearish trend. The previous low will be the target level.
TF : 1h
Entry : $0.1670
Target : $0.1493
SL : $0.1797
🔎#IOTA - Новый цикл ?
В 18 декабря представил глобальный расклад по монете IOTA
Спустя 2 месяца монета пришла в зону покупки и сейчас показывает себя отлично чтобы продолжить свой рост
В ближайшие 3 месяца жду рост до уровня 0.45
💻https://ru.tradingview.com/chart/IOTAUSDT/K4o0pgo9-iota-novyj-tsikl/
Как вам эта инвест идея ? пишите в комментарии
Торгуйте с умом
@ProfessorKlinkov