Как разделить строку с 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
Biznes va tadbirkorlik oliy maktabida ingliz tili va biznes muloqot ko‘nikmalarini rivojlantirishga bag‘ishlangan seminar-trening bo‘lib o‘tdi
🇺🇿 Biznes va tadbirkorlik oliy maktabida “Ingliz tili va biznes muloqot ko‘nikmalarini rivojlantirish” mavzusida seminar-trening o‘tkazildi.
Seminar-treningning mehmoni ingliz tili bo‘yicha xalqaro ekspert, pedagog va tadqiqotchi, “Tashkiliy innovatsiyalar” yo‘nalishi bo‘yicha pedagogika fanlari doktori Juzeppe Kiaramonte bo‘ldi.
Tadbir interfaol formatda tashkil etilib, unda ishtirokchilarga ingliz tilida, ayniqsa, og‘zaki nutq ko‘nikmalarini rivojlantirishga qaratilgan turli amaliy faoliyat turlari taqdim etildi. Shuningdek, ushbu ko‘nikmalarni biznes muloqot jarayonlarida samarali qo‘llash bo‘yicha tavsiyalar berildi.
Mashg‘ulot davomida tinglovchilar faoliyat yuritayotgan sohalaridagi real keyslar asosida muhokamalarda ishtirok etib, amaliy topshiriqlar orqali kommunikativ kompetensiyalarini mustahkamlash imkoniga ega bo‘ldilar.
Tadbir yakunida ishtirokchilar bunday seminar-treninglarni kelgusida muntazam o‘tkazib borish muhimligini ta’kidladilar.
🇷🇺RU
🇬🇧ENG
#GSBE#GraduateSchool#Masterclass#Englishlanguage
🔝Web-site |🔝Facebook | 🔝Instagram | 🔝Youtube
Наше Образовательное учреждение с гордостью объявляет о проведении международной олимпиады по английскому языку "Hippo"! Это уникальная возможность для всех учащихся продемонстрировать свои знания и навыки в английском языке. 📚✨
Олимпиада "Hippo" - это не только соревнование, но и отличный шанс для обмена знаниями, встречи с новыми людьми и получения незабываемого опыта. Мы приглашаем учеников всех возрастных категорий принять участие и показать свои лучшие языковые способности. 🌍🏆
🔹 Регистрация открыта до 2 декабря.
Присоединяйтесь к нам в этом увлекательном путешествии в мир английского языка! 🎉
#HippoOlympiad#EnglishLanguage#InternationalCompetition
If you have any questions, do not hesitate to contact us☎️
+998742261078 | +998742281121 | +998958505111 | +998742276163 | +998742252536 | +998952017878
or write on Telegram @admofadc
🎉Happy Birthday to Samora “Sam” Poswa, a citizen of South Africa🇿🇦 who lives and works in Yekaterinburg!
🎓Sam Poswa teaches English at the EnglishFit language school and has already introduced hundreds of Yekaterinburg residents to the culture and traditions of South Africa🌍
📚 Learn more about Sam’s activities:
— https://t.me/sarconsulurals/1575
— https://t.me/sarconsulurals/1489
— https://t.me/sarconsulurals/1443
🔗 His VK page:
https://vk.com/id524313855
🎂 Wishing Sam good health, inspiration, professional success, and many exciting new projects ahead!
#SouthAfrica#SamPoswa#Yekaterinburg#EnglishLanguage#CulturalExchange#Education
Do you know someone who always thinks that everyone else has a better life than them?! 🙄😅 Scroll through the images to find out how to use ‘the grass is always greener on the other side’ 🌱, and don’t forget to answer the questions on the last slide!
EXTRA: Could walking 7,000 steps a day could improve your mental health? 🚶 Click the link in our bio to find out and learn some useful vocabulary in the process! 📰💚
Image: Getty
#vocabulary#learnenglish#englishlanguage#expression#idiom#proverb#englishclass#speakenglish
You know when somebody just WON’T change their ways? 😠 We’ve got an English expression for that! ✅
Scroll through the images to find out how to use ‘You can’t teach an old dog new tricks.’ ❌🐶
Can you use it in a sentence – and do you have a similar expression in your language? 👇👇👇
MORE: If you'd like to learn some more animal idioms, like 'rabbit on 🐰' or 'as sick as a parrot 🦜', click the link in our bio!
Image: Getty
#trick#proverb#learnenglish#vocabulary#learnenglish#englishlanguage#expression#idiom#englishclass#speakenglish
😱 Oh no!!! There’s a mistake in this sentence. Do YOU 🫵 know what’s wrong? We’ll tell you the answer later! (Image: Getty)
MORE: Click the link in our bio for a quick video tutorial about this topic ☝️☝️☝️
#learnenglish#quiz#englishlanguage#grammar#vocabulary#spotthemistake#spottheerror#mistake#error#learnenglish