Maison > Article > développement back-end > Comment puis-je échapper en toute sécurité aux noms de fichiers et aux arguments pour les appels os.system() en Python ?
Lors de l'utilisation de os.system() pour exécuter des commandes de ligne de commande, la nécessité d'échapper aux noms de fichiers et aux arguments passés comme paramètres se pose, en particulier dans les systèmes d'exploitation tels que bash. Voici une méthode efficace pour y parvenir :
Fonction d'échappement utilisant shlex.quote()
Python 3 propose une fonction d'échappement pratique nommée shlex.quote(). Cette fonction convertit efficacement n'importe quelle chaîne en une version correctement échappée qui peut être utilisée en toute sécurité comme argument dans les appels os.system().
<code class="python">import shlex os.system(shlex.quote("cat %s | grep something | sort > %s" % (in_filename, out_filename)))</code>
Fonction d'échappement pour Python 2 et 3
Si vous avez besoin d'une compatibilité descendante avec Python 2, vous pouvez utiliser la fonction pipes.quote au lieu de shlex.quote(). Cependant, notez que les tuyaux sont obsolètes dans Python 3.10 et seront supprimés dans Python 3.13.
<code class="python">import pipes os.system(pipes.quote("cat %s | grep something | sort > %s" % (in_filename, out_filename)))</code>
Remarque supplémentaire sur la sécurité
Pendant que os.system() offre une méthode simple pour exécuter des commandes, il est essentiel d'être conscient des problèmes de sécurité. Faites preuve de prudence lorsque vous acceptez des commentaires provenant de sources non fiables.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!