Как разделить строку с 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
Результаты 3ей попытки Первенства Локомотив!
4ю попытку необходимо выложить - до 29 мая 23:59 по московскому времени;
Напоминаем вам условия первенства: в зачет идет лучшая попытка.
Условия:
- снять дорожку не более чем на 45 сек
- снять 2 одиночных трюка
- опубликовать видео на своей странице ВК
- отметить дисциплину #park#street (можно участвовать в двух дисциплинах с разными роликами)
- отметить @fedskaterussia
- поставить тег #первенство_локомотив
Скоро мы узнаем финалистов!
Добрый вечер! Мы подготовили результаты 2ой попытки Первенства Локомотив!
3ю попытку необходимо выложить - до 22 мая 23:59 по московскому времени;
Кто забыл условия первенства, то напоминаем вам: в зачет идет лучшая попытка.
Условия:
- снять дорожку не более чем на 45 сек
- снять 2 одиночных трюка
- опубликовать видео на своей странице ВК
- отметить дисциплину #park#street (можно участвовать в двух дисциплинах с разными роликами)
- отметить @id145190006 (@fedskaterussia)
- поставить тег #первенство_локомотив
Результаты 1ой попытки - https://vk.com/wall-150050521_4947
Битва продолжается!
Ну что, друзья, готовы снова зарядить пауэрбэнки и вернуться в скейтпарки за своими лучшими дорожками?
Объявляем онлайн-квалификацию на Первенство ОО «РФСО Локомотив»!
Первенство проходит в дисциплинах «парк» и «улица» среди юношей и девушек до 16 лет включительно (это значит, что на момент самого контеста вам должно быть не более 16 лет).
У вас будет 4 попытки, чтобы показать свой лучший результат!
В каждой попытке от вас требуется:
- снять дорожку не более чем на 45 сек
- снять 2 одиночных трюка
- опубликовать видео на своей странице ВК
- отметить дисциплину #park#street (можно участвовать в двух дисциплинах с разными роликами)
- отметить @fedskaterussia
- поставить тег #первенство_локомотив
Время для съемок и публикации своих видео:
1 попытка - до 8 мая 23:59 по московскому времени;
2 попытка - до 15 мая 23:59 по московскому времени;
3 попытка - до 22 мая 23:59 по московскому времени;
4 попытка - до 29 мая 23:59 по московскому времени.
Отличные новости! 🛴😎
У нас пополнение среди паркеров! Встречайте — Николаенко Данил из солнечного Краснодара!
Данил крутой райдер, чей уникальный стиль и бесстрашие уже успели вдохновить многих.
Мы рады объявить, что теперь Данил будет выступать при поддержке нашей команды и бренда!
Добро пожаловать в команду!
📱dkravets15
#park#TechTeamProхуйня
#НовыйРайдер
A mini picnic in the park. 🧺
Just being here and now is the best plan for the day.
Мини-пикник в парке. 🧺
Просто быть здесь и сейчас — лучший план на день.
#LunaEverly#Picnic#DayMindset#Park#Simplicity
A multidisciplinary team of XISUI Design has created a 3D concrete-printed playground in Shandong Province, China.
Named Boulder Park, a 13,000-square-metre community park in Ji’nan, combines massive boulders - a natural material symbolizing eternity - as the core design element. These boulders complement the park’s experiential and practical offerings.
Stones in the shallow creek can be incorporated into the water play installation, and boulders set over a sandpit can be used as climbing and resting play structures. Additionally, cutting-edge 3D-printed concrete technology is used to build a huge rock cave adventure area.
Images 1-2-3-4-5 📸 Zhou Sheng.
Image 6 📸 Hu Yihao.
#design#playgrounddesign#park#urban#3dprinting#3dprintingconcrete#china
📷 La foto è stata scattata nel Parco centrale intitolato a Maksim Gorkij a Lugansk.
Strutture in legno gialle usate come librerie pubbliche.
" Un viaggio nel lato nascosto del Donbass: quello che costruisce invece di distruggere ".
#Donbass#lugask#europa#estate#ferragosto
#Lugansk#europa#russia#italia#Books#lettura#parchi#park