Как разделить строку с 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
🇬🇧 New destination alert! TezJet is now flying directly from Bishkek to Delhi.
✈️ Starting 7th December 2025, every Sunday
www.flytezjet.com
#TezJet#BishkekToDelhi#DirectFlights#FlyTezJet#TravelWithTezJet#DelhiBound#NewRoute
🇷🇺 Новая направление! TezJet теперь летает напрямую из Бишкека в Дели.
✈️ Старт рейса: 7 декабря 2025 года, каждое воскресенье
www.flytezjet.com
#TezJet#BishkekToDelhi#DirectFlights#FlyTezJet#TravelWithTezJet#DelhiBound#NewRoute
✈️ BIG NEWS! TezJet is taking off to Moscow, Russia 🇷🇺
📍 Direct flights from Bishkek (FRU) to Moscow Domodedovo (DME)
📅 Launching 21 August 2025
🕕 Departure from Bishkek: 06:20 AM
🕖 Arrival in Moscow: 07:50 AM
📅 Operating 3 times a week:
➡️ Monday
➡️ Thursday
➡️ Saturday
🚀 Experience the comfort of our MD-83 aircraft as you fly direct to the heart of Russia. Whether it’s business, family, or adventure—Moscow is calling!
🎟️ Tickets are now on sale at www.flytezjet.com
Don't miss the first flight—book your seat now!
#TezJetAirlines
#TezJetToMoscow#MoscowFlights#TezJetAirlines#FlyTezJet#BishkekToMoscow#NewRoute#TravelWithTezJet
✈️ BIG NEWS! TezJet is taking off to Moscow, Russia 🇷🇺
📍 Direct flights from Bishkek (FRU) to Moscow Domodedovo (DME)
📅 Launching 21 August 2025
🕕 Departure from Bishkek: 06:20 AM
🕖 Arrival in Moscow: 07:50 AM
📅 Operating 3 times a week:
➡️ Monday
➡️ Thursday
➡️ Saturday
🚀 Experience the comfort of our MD-83 aircraft as you fly direct to the heart of Russia. Whether it’s business, family, or adventure—Moscow is calling!
🎟️ Tickets are now on sale at www.flytezjet.com
Don't miss the first flight—book your seat now!
#TezJetToMoscow#MoscowFlights#TezJetAirlines#FlyTezJet#BishkekToMoscow#NewRoute#TravelWithTezJet
🍞Гастромаршрут «Хлеб да соль земли Новогрудской» – это не только хлеб, но и зрелища!
Пройти по старинному городу, заглянуть в антикварную лавку на подступах к замку, выпить авторский кофе в костёле Святого Архангела Михаила, узнать историю любимого белорусского поэта Адама Мицкевича на театрализованной экскурсии, подняться на 35-метровую высоту старейшего костела Беларуси — костела Св.Казимира, спуститься с возвышенной душой и испечь ржаной хлеб на закваске в Казимировском Доме и конечно отдохнуть с французским шиком в экоусадьбе «Лавандовый сад» под пение птиц, хруст багета и со вкусом крафтовых сыров.
Узнать больше о маршруте и стать обладателем уникального чемоданчика 👉@visitNavahrudak
г. Новогрудок, пл. Ленина, 7, ТИЦ г. Новогрудка.
📱🎞Vkontakte
📱🎞Instagram
#познайбеларусь#новогрудок#маршруты#belarustravel#newroute#food#belarus
При использовании фото и материалов просьба отмечать @natbelarus (нам тоже нравится, что вам нравится) 😊🌿🙌
#познайбеларусь#гастротуризм#новогрудок
If you are going to visit Doha, you can use this selection of attractions that are worth visiting:
◽Museum of Illusions
◽Gondolania Theme Park & Villaggio Mall
◽The Pearl Island
◽Souq Waqif
◽Simaisma Beach
✈️ P.S. We will operate flights to Doha once a week: on Thursdays.
☎️ Tel.: 44-640-40-49, 44-640-40-50, 1133.
🌊
Если Вы собрались в Доху, Вам не помешает эта подборка достопримечательностей, которые стоит посетить:
◽Музей Иллюзий
◽Тематический парк Gondolania и Торговый центр Villaggio
◽Набережная The Pearl Island
◽Рынок Souq Waqif
◽Пляж Simaisma Beach
✈️ P.S. Мы будем совершать полёты в Доху раз в неделю: по четвергам.
☎️ Тел.: 44-640-40-49, 44-640-40-50, 1133.
#somonair#doha#qatar#newroute#сомонэйр#доха#катар#новыйрейс