Maison  >  Article  >  développement back-end  >  Comment empêcher les fenêtres de la console d'apparaître lors de l'utilisation de os.system() et subprocess.call() ?

Comment empêcher les fenêtres de la console d'apparaître lors de l'utilisation de os.system() et subprocess.call() ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-19 04:53:03256parcourir

How to Prevent Console Windows from Popping Up When Using os.system() and 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!

Déclaration:
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