Wow, danke für die vielen Tipps!
Ich hab die try-except-Schleife jetzt so bearbeitet, dass sie bei nem Timeout abbricht:
Code: Alles auswählen
try:
proc = subprocess.run(["wevtutil", "qe", "System", "/rd:true", "/f:Text", "/c:1", "/q:<QueryList><Query Id='0' Path='System'>\
<Select Path='System'>*[System[Provider[@Name='Microsoft-Windows-Power-Troubleshooter'] and (Level=4 or Level=0)\
and (EventID=1)]]</Select></Query></QueryList>"], capture_output = True, timeout = 15, text = True)
except subprocess.TimeoutExpired:
sys.exit(1)
Den zweiten Teil hab ich nachgemacht, ich hab nur ne Liste statt nem Generator genommen, da hab ich bisher noch gar keine Erfahrung, muss ich mich erst einlesen:
Code: Alles auswählen
lines = proc.stdout.splitlines()
parts = [line.partition(':') for line in lines]
data = {k.strip():v.strip(' Z') for k,_,v in parts}
sleep_time = parser.isoparse(data['Zeit im Energiesparmodus'].replace('?', ''))
Das os.system hab ich auch durch nen subprocess.run ersetzt:
Code: Alles auswählen
subprocess.run('shutdown /s /t 300 /c "Maximale PC-Nutzungsdauer erreicht. Computer wird in 5 Minuten heruntergefahren".')
Eines konnte ich jetzt noch nicht lösen: Der Code
funktioniert nicht, er liefert das gleiche Ergebnis, als würde man nur "shutdown" ausführen... Das Problem gibts zwar haufenweise im Internet, aber die Lösung hab ich nicht finden können, in
der Dokumentation heißts ja auch, man kann eine Liste aus Strings übergeben.
Danke vielmals nochmal!