starten Sie den lokalen computer aus python
Gibt es eine Möglichkeit, um dem computer ein Python-Programm ausgeführt wird, neu starten? Generische Lösung ist gut, aber insbesondere bin ich auf windows.
Nicht windows, sondern auf linux als os.system("reboot"). Vorausgesetzt, Sie haben die richtigen Berechtigungen.
Nicht zu empfehlen
A: Nein, es ist nicht veraltet, und für so etwas triviales wie diesem funktioniert es Prima.
Nicht zu empfehlen
os.system
. Es ist schon veraltet. @Claudiu: Verwenden Sie subprocess
.A: Nein, es ist nicht veraltet, und für so etwas triviales wie diesem funktioniert es Prima.
InformationsquelleAutor Claudiu | 2011-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Allgemeine Möglichkeit, dies zu tun, afaik.
Für Windows, benötigen Sie Zugriff auf die Win32-API. Etwa so:
In der win32api Modul ist ein Teil von pywin32.
Für linux/os x, ich denke, nannte Sie die "reboot" - Befehl ist der einfachste.
Oder sowas.
(Hinweis auf downvoters:
os.system()
hat nicht veraltet. Der text ist "Das subprocess-Modul bietet mehr leistungsfähige Einrichtungen zum erzeugen von neuen Prozessen und das abrufen Ihrer Ergebnisse; mit diesem Modul ist vorzuziehen, um diese Funktion zu verwenden." Für einfache Fälle wie diese, wenn Sie nicht daran interessiert sind, abrufen der Ergebnisse, noch in Mehrfachverarbeitungos.system()
funktioniert Prima).wmic
ist so und so. Die Verwendung von os.system, ich kümmere mich nicht darum.ist nur verfügbar unter Windows XP Professional, Windows Server 2003, Windows Vista und Windows Server 2008." Also, keine. Schlechte Idee.
Es ist verfügbar auf anderen Systemen auch, zum Beispiel Windows 7. Ich weiß nicht, ob es in einem SP für Windows XP Home, könnte sehr gut sein.
Es scheint nicht. Also, wenn Sie wissen, dass es auf Ihrem system, dann würde das funktionieren. Als generische Lösung ist es weniger ideal.
InformationsquelleAutor Lennart Regebro
Warum rufst du nicht einfach die shutdown Befehl mit Unterprozess?
InformationsquelleAutor Anders
Könnten Sie starten Sie einen Windows-system mit:
os.system("shutdown -t 0 -r -f")
Beispiel:
Ändern Sie die Zahl vor dem t, um ändern Sie die Anzahl der Sekunden vor dem Herunterfahren.
InformationsquelleAutor Malachi Bazar
Es gibt nichts in der standard-Bibliothek, die direkt erlauben Sie, dies zu tun, und ich bin nichts von alle Module, die eine cross-Plattform-Methode, aber wenn Sie Windows und wollen nicht, etwas zu installieren (wie z.B. die win32api) dann könnten Sie ctypes Standard-Modul und die Interaktion mit der WinAPI direkt.
Könnten Sie die
ExitWindowsEx()
- Funktion zum Neustart des Computers (es ist fast die gleiche wie meine andere Antwort Wie shudown einem computer mit Python; jedoch ist der hexadezimale Wert muss geändert werden, um den Neustart und nicht Herunterfahren).Prozess:
Zuerst müssen Sie ctypes:
Als Nächstes bekommen die
user32.dll
wie beschrieben in der Dokumentation:Also:
Nächstes müssen Sie rufen Sie die
ExitWindowsEx()
Funktion und legen Sie die richtigen hexadezimal-Werte:Das erste argument (
0x00000002
) das system herunterfährt und dann neu startet (siehe Dokumentation).Das zweite argument (
0x00000000
) gibt einen guten Grund, werden vom system protokolliert. Eine vollständige Liste finden Sie hierKomplette Code:
Über
os.system()
Methode unter Windows:Die win32api oder ctypes beide Antworten ausgeführt wird still.
os.system("shutdown -t 0 -r -f")
verlassen wird eine Meldung "Sie sind abgemeldet in weniger als einer minute", die möglicherweise nicht wünschenswert sein in einigen Fällen.Einer Datei neben dem Skript namens
shutdown.bat
/shutdown.exe
/shutdown.cmd
wird, führen Sie den Befehlshutdown -t 0 -r -f
zu brechen, aufrufen, die Datei und nicht den system-Befehl. Das gleiche gilt für die beschriebenenwmic.exe
oben.Als Anmerkung: ich gebaut WinUtils (nur Windows) vereinfacht das ein wenig, aber es sollte schneller sein (und erfordert keine Ctypes), weil es ist gebaut in C.
Beispiel:
InformationsquelleAutor Simon