Comment puis-je échapper en toute sécurité aux noms de fichiers et aux arguments pour les appels os.system() en Python ?

Mary-Kate Olsen
Libérer: 2024-10-31 21:10:02
original
818 Les gens l'ont consulté

How can I safely escape filenames and arguments for os.system() calls in Python?

Échapper aux arguments pour les appels os.system()

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!