J'écris une petite application qui utilise un "fichier d'index" pour ouvrir des dossiers dans l'explorateur à partir de quelques pressions sur un bouton. Quoi qu'il en soit, je voudrais mettre à jour ce fichier d'index dans un "processus d'arrière-plan" chaque fois que les applications s'arrêtent. La mise à jour du fichier d'index implique la numérisation via notre réseau et pour certains utilisateurs distants, cela peut prendre quelques minutes. C'est pourquoi je voudrais qu'il cache la console pendant le processus d'analyse afin d'éviter que le processus ne soit annulé par l'utilisateur.Fermer la console pendant l'exécution du processus
J'ai essayé plusieurs choses semblables à:
#these are just dummy lines
path = get_user_input()
subprocess.Popen(r'explorer "%s"' % path)
#Here I start my update process
multiprocessing.Process(target=update_index).start()
#end of script, now I want that process to continue until finished while main console closes. I only seem to get one or the other.
J'ai aussi essayé d'utiliser:
DETACHED_PROCESS = 0x00000008
CREATE_NO_WINDOW = 0x08000000
subprocess.Popen(command, shell=True, stdin=None, stdout=None,
stderr=None,
creationflags=DETACHED_PROCESS|CREATE_NO_WINDOW)
et a réussi à obtenir une fenêtre de console séparée mais toujours aucun moyen d'empêcher l'utilisateur de fermer la processus.
Gardez aussi à l'esprit que je voudrais distribuer ce script avec quelque chose comme py2exe plus tard pour le rendre accessible aux personnes sans python, donc je suppose que l'utilisation de pythonw.exe est hors de question. ou?
Le script doit-il normalement avoir une console? Sinon, utilisez un fichier .pyw qui s'exécute avec pythonw.exe. – eryksun
BTW, 'CREATE_NO_WINDOW' est ignoré si vous utilisez également' DETACHED_PROCESS' car cela n'a aucun sens de les combiner. 'DETACHED_PROCESS' est logique pour exécuter une application de console sans console uniquement si elle ne provoque pas les processus de la console enfant car ils créeront simplement leurs propres fenêtres de console. Avec ce drapeau, vous devez également rediriger les poignées standard vers le périphérique 'NUL'. 'CREATE_NO_WINDOW' fonctionne pour les processus fils car ils hériteront de la console sans fenêtre. De même, vous pouvez utiliser 'STARTUPINFO' pour cacher la fenêtre de la console. – eryksun
Oui, le script devrait normalement avoir une console, parce que dans la première partie, l'utilisateur j'ai promis deux questions à répondre. Au moins, c'est comme ça que ça se passe maintenant, une possibilité pourrait être de promettre ces questions dans une autre sorte de fenêtre qu'une console, je vais essayer quand je serai de retour au bureau. En ce qui concerne les drapeaux pour la méthode des sous-processus, je n'ai pas la moindre idée de la façon dont ils fonctionnent. J'ai simplement trouvé les google et essayé différentes combinaisons, merci de m'avoir donné plus de détails! – Saftblandaren