← retour aux snippets

shlex: split et join sûrs pour commandes

Parser et reconstituer des commandes sans casser les guillemets.

python shell #shlex#shell#quoting

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.