Maison >développement back-end >Tutoriel Python >Comment empêcher les fenêtres de la console d'apparaître lors de l'utilisation de os.system() et subprocess.call() ?
Masquage des fenêtres de la console dans os.system() et subprocess.call()
Lors de l'utilisation de os.system() ou subprocess.call() () pour exécuter des commandes, vous pouvez rencontrer une fenêtre de console ennuyeuse qui apparaît. Cela peut perturber votre flux de travail et donner l’impression que votre script n’est pas professionnel. Heureusement, il existe des moyens de supprimer ce comportement indésirable.
Pour masquer la fenêtre de la console, vous pouvez utiliser la structure STARTUPINFO disponible dans le module de sous-processus. Voici comment procéder :
si = subprocess.STARTUPINFO() si.dwFlags |= subprocess.STARTF_USESHOWWINDOW #si.wShowWindow = subprocess.SW_HIDE # default subprocess.call('taskkill /F /IM exename.exe', startupinfo=si)
Vous pouvez également définir des indicateurs de création spécifiques pour empêcher la création de la fenêtre de console en premier lieu :
CREATE_NO_WINDOW = 0x08000000 subprocess.call('taskkill /F /IM exename.exe', creationflags=CREATE_NO_WINDOW)
Ces approches entraîneront toujours un processus de console avec des poignées pour les E/S, mais il sera invisible et n'interférera pas avec l'interface utilisateur.
Pour une solution plus complète, vous pouvez obliger le processus enfant à n'avoir aucune console :
DETACHED_PROCESS = 0x00000008 subprocess.call('taskkill /F /IM exename.exe', creationflags=DETACHED_PROCESS)
Dans ce cas, les handles standard de l'enfant seront 0, mais vous pouvez les rediriger vers un fichier ou un tube comme subprocess.DEVNULL.
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!