Как разделить строку с 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
Découvrez / partagez 6 idées de tracts pour le #RIC contre la #RéformeDesRetraites et pour le #RICveto comme droit d'opposition et d'abrogation de toutes les lois à la noix imposées par les élus !
Sur Telegram, ou sur Facebook :
https://www.facebook.com/Culture.RIC/posts/pfbid0J7w4VKU99hp1RiwkTkAtk33Rm2FPJTf6ABcpE4CexZcu8n9URT6WrRM6i8bLNGowl
Téléchargement : https://petition.ric-france.fr/petition-veto-reforme-des-retraites
Cinq 49.3 en 25 jours ?!?!
🍄 Il en pousse tellement qu’on ne pourra bientôt plus les compter !
Après un 15e 49.3 sur la budget de la sécurité sociale, #Borne en fait pousser un 16e sur la loi de finance, un 17e sur la loi de programmation budgétaire et un 18e puis un 19e à nouveau pour budget de la Sécu.
On n’arrive plus à suivre !
Il est temps que ça s’arrête…
Avec le #RICveto, on pourrait bloquer les 49.3 !
Avec le #RIClégislatif, proposer des alternatives…
Avec le #RICconstituant, supprimer le 49.3 ou limiter son utilisation.
Aidez à définir le RIC voulu par les Français :
➡️culture-ric.fr/consultation
Publis :
FB : fb.com/photo/?fbid=645835234427367
X : twitter.com/CultureRic/status/1729160608493576612
Insta : instagram.com/p/C0J66spqSVt
Avec le #RICconstituant, on pourrait supprimer ou limiter le 49.3 !
Avec le #RICveto, on pourrait bloquer les 49.3 !
Avec le #RIClégislatif, on pourrait proposer des alternatives !
Avec le #RICrévocatoire, ils ne s’y risqueraient même plus...
Aidez à définir le #RIC voulu par les Français
➡️culture-ric.fr/consultation
✏️ Fred Sochard
_____________________
Un nouvel illustrateur, fervent défenseur de la Démocratie, a accepté de nous laisser utiliser ses dessins pour promouvoir le #RIC et la #Démocratie.
Il s’agit de Fred Sochard, un talentueux illustrateur pour la presse et l'édition jeunesse. Il a étudié aux Arts Décoratifs de Paris. Ses sources d’inspiration sont diverses, mélangées : art brut, art populaire, art tribal, contes du monde entier, histoires de marins ou de pirates !
Vous pouvez en voir plus ici : fredsochard.com
__________
Partager
➤ FB - X - Insta
80% des Français sont opposés à la #RéformeDesRetraites et pourtant, ils sont impuissants…
75% pensent que malgré la forte opposition, la réforme aura lieu quand-même...
Il nous faut un nouveau droit politique, celui de pouvoir s’opposer aux lois injustes : le #RICveto !
Partagez massivement cette pétition pour la mise en place du RIC veto :
➡️https://petition.ric-france.fr/petition-veto-reforme-des-retraites
#Retraite#Borne#Macron#JusticeSociale#RIC#Référendum#Retraites#StopRetraiteMacron#RetraiteA60Ans#greve19janvier#19Janvier