Как разделить строку с 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
#java#nem#nem_blockchain
You can quickly build and run a NEM node using the NIS (NEM Infrastructure Server) project, which includes all necessary parts like core, deploy, peer, and nis modules. To build it, you need Java 11 or higher and Apache Maven. After building and testing, configure your node by placing property files in a folder named "staging" and start the node with a Java command allocating at least 6GB RAM. You can also set up a testnet node by creating a specific config file. This setup helps you run and manage a secure NEM blockchain node efficiently, supporting blockchain validation and network participation. Detailed docs and community support are available for help.
https://github.com/NemProject/nem
#блокчейн#ProofOfImportance#Blockchain#Crypto#Web3#PoI#база
Что такое Proof of Importance (PoI) и как он работает?
Интересуетесь криптовалютами и блокчейн-технологиями? Тогда вам 🤨 обязательно нужно узнать о Proof of Importance (PoI) — инновационном механизме консенсуса, который предлагает уникальные преимущества!
🔥Proof of Importance (анг. - доказательство важности) — это алгоритм консенсуса, впервые представленный платформой #NEM (New Economy Movement). Он оценивает "важность" каждого участника сети, чтобы определить, кто будет создавать следующий блок. В отличие от Proof of Work (PoW) и Proof of Stake (PoS), PoI учитывает не только количество монет на счету, но и активность пользователя в сети.
⚙️Особенности PoI:
• Активность в сети: PoI поощряет активное участие в транзакциях, а не просто накопление монет.
• Доверие и стабильность: Активные пользователи получают больший вес, что стимулирует участие и укрепляет сеть.
• Справедливость: PoI снижает вероятность централизации, так как учитывается вклад каждого участника, а не только крупные счета.
📌 Для понимания работы консенсуса приведем простой пример.
Представьте, что Алиса и Боб — участники сети. У Алисы на счету 1000 монет, но она не участвует в транзакциях, в то время как у Боба 500 монет, но он активно совершает транзакции. PoI считает Боба более важным 😎, так как он вносит больший вклад в жизнедеятельность сети. Благодаря этому, Боб имеет больше шансов создать новый блок 💡.
❗️Поддержите пост лайками 👍, если узнали что-то новое!
@MirraChannel😎