Как разделить строку с 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
Заканчиваем 2023 год, ещё одной отгрузкой! Трактор Zoomlion RS1304 отправляется на уборку федеральных трасс Ленинградской области!
Хочется сказать огромное спасибо всем кто выбирает компанию АГРОМАГ и огромное Спасибо Вам за доверие к нам!!!
Желаем всем больших и малых побед, рекордных урожаев и главное здоровья!
В 2024 году ожидается много новинок в нашем портфеле сельхозтехники!
Одел сервиса продолжит повышать уровень и качество!
Участие в выставках, демо испытания и многое другое.
Оставайтесь с нами, чтобы получить информацию первыми.
#АГРОМАГ#сновымгодом#агростройторг#kverneland#zoomlion#ROC#Blujet#unia#сельзозтехника#сервис#продажи
Важно внедрять инновационный опыт и развитие
▪️Инновационное развитие – это использование результатов научных открытий, чтобы продвинуть вперед бизнес.
▪️Прогрессивные методы производства, автоматизированные линии или технологии– это можно отнести к инновациям. И да – они действительно очень важны.
К сожалению, мир меняется настолько быстро, что отсутствие технологичных решений уже не позволяет эффективно вести бизнес. Отсутствие инноваций влечет за собой снижение продуктивности, потерю конкурентоспособности и замедление, а возможно, и полную остановку роста бизнеса.
Для того чтобы начать работу с инновациями, в первую очередь нужно создать под них условия. Развитие возможно в компаниях, где поощряются нововведения и творческое мышление, а руководство открыто к изменениям. Тогда и рождается инновационный потенциал.
Если потенциал достаточный – можно переходить к внедрению: поставить цель, выбрать стратегию, генерировать и тестировать идеи. Это длительный и сложный процесс, но при верном подходе себя оправдывает.
🔺При создании условий для инноваций, руководство компании играет ключевую роль!
Этуев Мухажир Хазреталиевич инициатор и двигатель изменений в компании, он понимает важность инноваций и искусство управления ими.
Компания Агромаг постоянно ищет новые и инновационные способы для улучшения наших решений и удовлетворения потребностей наших клиентов.
Спасибо всей команде "Приневское" и "Октябрьское" за помощь в проведении Первого межрегионального Семинар-Совещания "Инновационные Технологии"
Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь с нами. Мы всегда готовы помочь вам.
#Агромаг#СеминарСовещанияИнновационныеТехнологии#Приневское#Октябрьское#АСТ#BluJet#Stara#удобрения#КАС#ЖКУ#СЗР#минеральныеудобрения#РастворныйУзел#Растениепитатель#Технологии#Инновации#прогресс#бизнес#успех