Caractères d'échappement pour les appels os.system()
Lors de l'utilisation de os.system(), il est crucial de garantir un échappement correct des noms de fichiers et des arguments. . Voici une solution qui résout ce problème et prend en charge plusieurs systèmes d'exploitation et shells, principalement bash.
Utilisation de guillemets
L'approche la plus simple et la plus sécurisée consiste à entourer les commandes et arguments entre guillemets doubles ou simples :
os.system("my_command 'argument with spaces'")
S'échapper à l'aide de shlex ou de pipes
Si les guillemets ne conviennent pas, les modules shlex ou pipes peuvent être utilisés pour échapper les caractères :
Exemple d'utilisation
Supposons que vous souhaitiez exécuter la commande "cat input.txt | grep 'trouver quelque chose' | sort > output.txt" en utilisant os.system(). En utilisant shlex.quote(), le code serait :
import shlex cmd = "cat {} | grep '{}' | sort > {}".format( shlex.quote("input.txt"), shlex.quote("find something"), shlex.quote("output.txt"), ) os.system(cmd)
Notes sur la sécurité
Alors que os.system() offre un moyen rapide et direct d'exécuter commandes système, il est important de prendre en compte les failles de sécurité potentielles. Assurez-vous que les entrées générées par l'utilisateur ou non fiables sont correctement validées et nettoyées avant d'utiliser os.system().
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!