Comment l'arrêt d'un ordinateur à l'aide de Python
J'ai écrit un script Python qui devrait, à terme l'arrêt de l'ordinateur.
Cette ligne est une partie de celui-ci :
os.system("shutdown /p")
Il fait une sorte d'arrêt mais reste sur la tour sur Windows panneau de contrôle (où l'utilisateur peut basculer les utilisateurs d'ordinateur).
Est-il un moyen pour l'arrêt de l'ordinateur?
J'ai essayé d'autres os.system("shutdown ___")
méthodes, sans succès.
Est-il une autre méthode qui pourrait aider?
Ce n'est pas vraiment rien avoir à faire avec Python, comme
Oui, bien sûr. Mais ma question est de savoir si il existe un moyen à l'aide de modules Python peut-être? manière ou d'une autre? Et j'ai besoin d'exécuter le programme sur plusieurs ordinateurs, de sorte que la version de l'OS n'est pas la même. Merci
shutdown /p
est tout simplement envoyé par le système comme un terminal de commande. Veuillez préciser votre version de l'OS, comme les options peuvent varier.Oui, bien sûr. Mais ma question est de savoir si il existe un moyen à l'aide de modules Python peut-être? manière ou d'une autre? Et j'ai besoin d'exécuter le programme sur plusieurs ordinateurs, de sorte que la version de l'OS n'est pas la même. Merci
OriginalL'auteur Ben L | 2015-12-02
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne pour vous.
"You are about to be signed out in less than a minute"
. Une autre est que si quelqu'un met un script batch avec le nomshutdown.bat
avec le script, ça ne fonctionnera pas, c'est aussi un risque de sécurité depuis ce fichier sera exécuté. sous-processus devrait maintenant être utilisé suros.system()
.Vous pouvez éviter ce message - os.system ("shutdown -s -t 0')
OriginalL'auteur dudu1791
Pour Linux:
ou: si vous souhaitez immédiate de l'arrêt, sans
sudo
demander le mot de passe, utilisez la commande suivante pour Ubuntu et similaires distro:os.system()
.OriginalL'auteur Mtl Dev
La seule variante qui a vraiment workes pour moi sans aucun problème, c'est:
OriginalL'auteur Vladimir
À l'aide de ctypes vous pouvez utiliser le ExitWindowsEx fonction d'arrêt de l'ordinateur.
Description à partir de MSDN:
Première partie du code:
Maintenant l'explication ligne par ligne:
ExitWindowsEx
est fourni par leuser32.dll
et doit être chargé viaWinDLL()
ExitWindowsEx()
de la fonction et de passer les paramètres nécessaires.Paramètres:
Tous les arguments sont hexadécimaux.
Le premier argument que j'ai sélectionné:
Il existe de nombreuses autres fonctions possibles voir la documentation pour une liste complète.
Le deuxième argument:
Le deuxième argument doit donner une raison de l'arrêt, qui est enregistré par le système. Dans ce cas, je l'ai mis pour
Other issue
mais il ya beaucoup à choisir. Voir cette pour une liste complète.Faisant de la croix-plate-forme:
Cela peut être combinée avec d'autres méthodes pour faire de la croix-plate-forme. Par exemple:
C'est un Windows charge de la fonction (bien que Linux/Mac ont un équivalent), mais est une meilleure solution que d'appeler
os.system()
depuis un script batch appeléshutdown.bat
ne seront pas en conflit avec la commande (et causer un risque de sécurité dans l'intervalle).En outre, il ne dérange pas les utilisateurs avec un message disant
"You are about to be signed out in less than a minute"
commeshutdown -s
n', mais s'exécute en mode silencieux.Comme une note de côté l'utilisation sous-processus sur
os.system()
(voir Différence entre les sous-processus.Popen et les os.système)Comme une note de côté: j'ai construit WinUtils (Windows uniquement) qui simplifie un peu, mais il devrait être plus rapide (et ne nécessite pas de Ctypes), puisqu'il est construit en C.
Exemple:
OriginalL'auteur Simon
Ce code Python peut faire l'acte:
OriginalL'auteur D. Robusto