Как разделить строку с 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
Студенты НХТИ познакомились с производством KAMA TYRES
На шинных предприятиях побывали студенты второго курса технологического факультета. Пока они прошли лишь общую программу, и пусть до учебной практики еще далеко, ознакомительная экскурсия на промышленные предприятия должна помочь определиться с будущей специальностью.
KAMA TYRES участвует в программе подготовки бакалавров «Федеральная экспериментальная площадка», в рамках которой студенты проходят стажировку на рабочем месте по специальности и одновременно заканчивают обучение. После получения диплома они трудоустраиваются на предприятия компании.
«На заводе все понравилось, почти все процессы автоматизированы, рабочие только следят за параметрами оборудования. Особенно впечатлили сборочные станки. Не исключаю, что после окончания учебы устроюсь именно на KAMA TYRES», – отметил Данис Гайсин, студент 2 курса направления «химическая технология».
#KAMATYRES
Торжественный подиум @silkwayrally - красивое и зрелищное мероприятие.
Мы хотим поблагодарить жителей и гостей города Томск, за то, что разделили с нами этот замечательный вечер.
Делимся первыми снимками праздника.
Фотограф - Антон Еликов.
@kamazmaster_team
#Камаз#ВТБ#Газпром#1C#KamaTyres#энергогарант#GMGen#ArtaEDM#SilkWay#SilkWayRally#KamazMaster
Прошли официальные тесты, готовимся к торжественному старту Баха "Золото Кагана"
25 апреля состоится торжественный старт, где мы ждем всех, сделаем вместе крутые фото, пилоты оставят автограф на память и у каждого есть шанс получить на память сувенир😉
г. Астрахань, ул. Максима Горького, 27 в 15:00
#АвитоСпецтехника#GMGen#Арта
#Кедр#Precab#Теком#KamaTyres#INFORCE#НациональнаяЛотерея
Эдуард Николаев и Сергей Куприянов посетили церемонию открытия новой АГНКС сети «Газпром» в Томской области.
Команда «КАМАЗ-мастер» на практике знакома с преимуществами газомоторного топлива и вносит свой активный вклад в развитии и популяризацию новых решений для автомобилей любых классов.
В параде техники принял участие наш гоночный КАМАЗ. А также, Lada Vesta, Lada Largus, Газель Next, Автомобиль УАЗ, Автобус Yutong, Автобус НЕФАЗ, Автобус ПАЗ, Самосвал КАМАЗ.
Поздравляем жителей области с новой АГНКС сети «Газпром»!
#Камаз#ВТБ#Газпром#1C#KamaTyres#энергогарант#GMGen#ArtaEDM#SilkWay#SilkWayRally#KamazMaster