Как разделить строку с 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
#DOCK/USDT analysis -
#DOCK is in a downtrend, trading below the 200 EMA. The price has broken out of the previous support and shown an impulsive bearish move. Right now, the price is retesting the broken zone. It is expected to reverse from there and continue the bearish momentum. Wait for the break of the $0.02069 level to go short.
TF : 1h
Entry : $0.02069
Target : $0.01935
SL : $0.02153
#DOCK upcoming hot events👇
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Integrate Traceable Creds
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Delegatable Credentials
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Ethereum Bridge Audit
🆕New Dock (DOCK) event!
30 June 2023 (or earlier)
Wallet App Staking
🆕New Dock (DOCK) event!
30 September 2023 (or earlier)
Bridge with Ethereum
#DOCK upcoming hot events👇
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
White Label Mobile Wallet
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Credentials Builder
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
EVM & Native Chain Comm.
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
V2: Relay Service
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Private Delegatable Creds
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Integrate Traceable Creds
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Delegatable Credentials
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Ethereum Bridge Audit
#DOCK upcoming hot events👇
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
White Label Mobile Wallet
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Credentials Builder
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
EVM & Native Chain Comm.
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
V2: Relay Service
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Private Delegatable Creds
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Integrate Traceable Creds
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Delegatable Credentials
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Ethereum Bridge Audit
#DOCK upcoming Events 👇👇
🆕 New Dock (DOCK) event!
30 September 2022 (or earlier)
Wallet App V0.3
🆕 New Dock (DOCK) event!
30 September 2022 (or earlier)
Mobile App V0.4 Staking
🆕 New Dock (DOCK) event!
30 September 2022 (or earlier)
Relay Service
🆕 New Dock (DOCK) event!
30 September 2022 (or earlier)
DSL Integration
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Web Wallet
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Integrate Anonymous Creds