Как разделить строку с 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
📰 NEWS | Venezuela Deploys Nationwide Task Force After Heavy Rains Cut Off Thousands and Damage Road Infrastructure
Torrential rains have caused widespread flooding and landslides in the states of Mérida, Trujillo, Barinas, Portuguesa, and Táchira. The intense weather has cut off thousands of families and severely damaged road infrastructure.
In response, President Nicolás Maduro activated a nationwide task force involving the armed forces, local governments, and communal organizations. Authorities reported 25 collapsed bridges—16 completely destroyed—and 370 affected homes, with a third totally lost.
🔗 Read the full report here: https://shorturl.at/oP4bE
#DisasterAid#Flooding
🌍 Rapid melting of glaciers is raising global sea levels faster than expected, contributing to increased flooding risks in coastal cities and threatening freshwater supplies for millions worldwide. ✨
#climate⚡#glaciers⚡#flooding⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 In 2022, two major floods in Pakistan covered about one-third of the country, displacing over 33 million people—one of the largest human impacts from a single natural disaster this decade. ✨
#disasters⚡#flooding⚡#climate⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Nearly 90% of the world’s wetlands have disappeared since 1700, shrinking vital habitats and reducing natural flood protection for millions of people living downstream. ✨
#wetlands⚡#extinction⚡#flooding⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 In 2023, Cyclone Mocha became one of the strongest storms ever recorded in the North Indian Ocean, with winds over 250 km/h, causing severe flooding and reshaping coastal landscapes. ✨
#disaster⚡#cyclone⚡#flooding⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Venice’s famous canals are threatened by sea level rise—since 1900, water has climbed over 30 centimeters, making floods more frequent and putting historic buildings at risk. ✨
#Venice⚡#erosion⚡#flooding⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
#Indonesia#flooding#rain#ecology#weather#climate#destruction#anomaly#climatechangey
🇮🇩 Наводнение в районе Реджанг-Лебонг (Бенгкулу, 7 мая 2026 года)
🌧 Наводнение произошло в районе Реджанг-Лебонг, провинция Бенгкулу, Индонезия. Сильные дожди привели к затоплениям и нарушениям движения.
🌊 Повышение уровня воды затронуло жилые районы и местную инфраструктуру.
Подобные наводнения могут усилиться из-за экстремальных осадков и стать более частыми в результате изменения климата.
#Tajikistan#flooding#rain#ecolog#weather#climate#destruction#anomaly#climatechangey
🇹🇯 Наводнение в Душанбе (30 апреля 2026 года)
🌧 Сильные дожди привели к наводнению в городе Душанбе, Таджикистан. Интенсивные осадки вызвали затопление улиц и нарушили транспортное сообщение.
🌊 Текущая вода повлияла на повседневную жизнь и городскую инфраструктуру.
Такие экстремальные осадки могут указывать на увеличение частоты опасных погодных явлений, связанных с изменением климата.
#China#Flooding#Fujian#HeavyRain#Floods#climate#destruction#anomaly#climatecrisis
🇨🇳Наводнение в провинции Фуцзянь, Китай🌧️
🌊 23 апреля 2026 года сильные дожди продолжались в Фуцзяне и соседних регионах, вызывая локальные наводнения на улицах и в низменных районах. Видео показывают затопленные дороги и дренажные системы, работающие на полную мощность.
📅 По данным Министерства водных ресурсов Китая и государственного телеканала CCTV, наводнения ожидаются в апреле-мае 2026 года в Фуцзяне, Чжэцзяне и дельте реки Чжуцзян, причем уровень воды может превысить предупредительные пороги.
ℹ️ В настоящее время нет официальных сообщений о крупных жертвах или широкомасштабных разрушениях в Фуцзяне в последние дни, но местные метеорологические службы продолжают следить за ситуацией.
📎 Источник: Reuters
#Afghanistan#flashflood#flooding#waterflow#transport#danger#extremeweather#weatheranomaly#climatechange#climate#destruction#anomaly#climatecrisis#weather
🇦🇫Афганистан — Мощный поток воды перевернул автобус на шоссе Герат–Кабул
🌊 28 марта 2026 года автобус с пассажирами пытался пересечь затопленный участок шоссе Герат–Кабул, но был смыт мощным потоком воды.
🚌 На кадрах видно, как транспортное средство теряет устойчивость и переворачивается, создавая опасную ситуацию для находившихся внутри людей.
⚠️ Подобные инциденты происходят во время ливневых паводков, когда уровень воды и интенсивность потока могут быстро возрастать, делая пересечение дорог чрезвычайно опасным.