Как разделить строку с 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
🇷🇺🤝🇮🇳 Новости с INNOPROM 2025
Сегодня я выступил на стратегической сессии «Россия–Индия: к $100 миллиардам товарооборота» в рамках INNOPROM 2025 в Екатеринбурге.
Было честью разделить сцену с В. Кумаром, А. Соболевым, А. Агарвалом, Н. Рыбленковым, И. Куржиямским, М. Лабудиным, Б. Шрикантом и А. Крутовым.
Благодарю за возможность внести вклад в развитие торгового диалога между Индией и Россией как заместитель председателя Комиссии МТПП по Индии и президент группы компаний Soltex.
📍 Я на INNOPROM до вечера — буду рад встретиться!
#INNOPROM2025#ИндияРоссия#SoltexGroup#ManishKumar#Торговля#EAEUIndia
🇷🇺🤝🇮🇳 INNOPROM 2025 Update
Today, I had the honor of speaking at the strategic session “Russia–India: Toward a $100 Billion Trade Turnover” at INNOPROM 2025 in Ekaterinburg.
Proud to share the stage with H.E. Vinay Kumar, Andrey Sobolev, Anil Agarwal, Nikita Ryblenkov, Igor Kurzhiyamsky, Mikhail Labudin, Badiga Shrikant, and Alexander Krutov.
Grateful for the opportunity to contribute to India–Russia trade dialogue as Deputy Chairman of MCCI’s India Commission & President of Soltex Group.
📍 I’m at INNOPROM till evening — happy to connect!
#INNOPROM2025#IndiaRussia#SoltexGroup#ManishKumar#TradeGrowth#EAEUIndia
🇷🇺🤝🇮🇳 I’m pleased to share that I will be participating as a speaker at INNOPROM 2025, Russia’s largest international industrial trade fair, taking place from July 7–10 at the Ekaterinburg-EXPO.
On July 7 (10:30–12:00, Hall 3.4), I will speak in the strategic session:
“Russia–India: Toward a $100 Billion Trade Turnover.”
As President of Soltex Group and Deputy Chairman of the MCCI Commission on Foreign Economic Relations with Partners in India, I look forward to contributing to the dialogue on expanding bilateral trade, addressing non-tariff barriers, and advancing the EAEU–India Free Trade Agreement.
INNOPROM is a premier global platform where industry, innovation, and international cooperation converge — bringing together decision-makers from around the world.
🔗 Register: expo.innoprom.com/registration/visitor-2025
🎟 Promo Code: ZVCZ2A (Free Entry)
Let’s build the next chapter of India–Russia industrial partnership.
#INNOPROM2025#SoltexGroup#ManishKumar#IndiaRussia#EAEUIndia#TradeGrowth
🇷🇺🤝🇮🇳 Рад сообщить, что я буду выступать в качестве спикера на международной промышленной выставке INNOPROM 2025, которая пройдет с 7 по 10 июля в Международном выставочном центре «Екатеринбург-ЭКСПО».
Мое выступление состоится 7 июля с 10:30 до 12:00 в зале 3.4 в рамках сессии:
«Россия–Индия: К торговому обороту в $100 миллиардов»
В качестве Президента компании Soltex Group и Заместителя председателя Комиссии МТПП по внешнеэкономическим связям с партнерами в Индии я приму участие в обсуждении путей достижения целевого уровня товарооборота, снятия нетарифных барьеров и развития зоны свободной торговли между Индией и ЕАЭС.
INNOPROM — ведущая промышленная площадка России, объединяющая лидеров отрасли и решений.
🔗 Регистрация: expo.innoprom.com/registration/visitor-2025
🎟 Промокод для бесплатного входа: ZVCZ2A
Давайте вместе строить новое будущее российско-индийского промышленного сотрудничества!
#INNOPROM2025#SoltexGroup#ManishKumar#РоссияИндия#ПромышленнаяВыставка#ЕАЭСИндия