objectif
Parser et reconstituer des commandes sans casser les guillemets.
code minimal
import shlex
s = 'curl -H "Accept: application/json" https://api.data.pm'
parts = shlex.split(s)
rebuilt = shlex.join(parts)
print(isinstance(parts, list) and "curl" in rebuilt) # attendu: True
utilisation
import shlex
parts = ["echo", "hello world"]
print(shlex.join(parts).startswith("echo"))
variante(s) utile(s)
import shlex
s = "cmd arg1 'spaced arg'"
print(shlex.split(s)[2] == "spaced arg")
notes
- shlex.join (3.8+) échappe correctement les arguments avec espaces.
- Ne passez pas de chaîne entière à subprocess sans split si shell=False.