Pythoniga arvuti sulgemine: samm-sammuline juhend Windowsi, Linuxi ja macOS-i jaoks

1. Pythoni abil arvuti sulgemise põhimõtted

Pythoni abil arvuti sulgemise kõige lihtsam viis on kasutada os-moodulit. See meetod on lihtne, kuid samas väga võimas ning seda mõistavad hõlpsasti ka algajad, mistõttu kasutavad seda paljud Pythoni arendajad. Allpool selgitame üksikasjalikult seda põhimeetodit.

1.1 Miks sulgeda arvuti Pythoniga?

Kuna Python töötab erinevatel platvormidel, saab sama koodi kasutada Windowsi, Linuxi ja macOS-i arvutite sulgemiseks. Lisaks saab Pythoni skripti abil näiteks lasta arvuti automaatselt sulgeda pärast kindla ülesande lõpetamist, mis muudab töövoo haldamise tõhusamaks.

1.2 Lihtne sulgemine os-mooduliga

Kõige lihtsam viis arvuti sulgemiseks Pythoni kaudu on os.system funktsiooni kasutamine süsteemikäskude täitmiseks. Allpool on toodud näide Windowsi ja macOS/Linuxi jaoks.

import os

# Windowsi sulgemine
os.system('shutdown /s /t 1')

# macOS/Linuxi sulgemine
os.system('shutdown -h now')

1.2.1 Windowsi puhul

Windowsis saab arvuti sulgeda käsuga shutdown /s /t 1. /s tähendab sulgemist ja /t määrab ooteaja sekundites. Antud juhul sulgub arvuti 1 sekundi pärast.

1.2.2 macOS/Linuxi puhul

macOS-is ja Linuxis kasutatakse käsku shutdown -h now. Valik -h tähendab „halt“ ehk peatamist, mis lõpetab süsteemi töö kohe.

1.3 Platvormipõhised käsud

Igal operatsioonisüsteemil on erinevad sulgemiskäsud, kuid Pythoni skripti abil saab OS-i tuvastada ja täita sobiva käsu automaatselt. Näiteks saab kasutada platform-moodulit järgmiselt:

import os
import platform

if platform.system() == "Windows":
    os.system('shutdown /s /t 1')
elif platform.system() == "Linux" or platform.system() == "Darwin":
    os.system('shutdown -h now')

See skript tuvastab jooksva operatsioonisüsteemi ja täidab sellele vastava sulgemiskäsu, võimaldades sama koodi kasutada mitmel platvormil.

1.4 Kokkuvõte

os-mooduliga sulgemise meetod on väga lihtne, kuid samas paindlik. Eriti kasulik on see mitme operatsioonisüsteemi toetamisel. Selle baasskripti peale saab lisada täiendavaid funktsioone, et automatiseerida arvuti sulgemisprotsessi ja parandada süsteemihaldust.

2. Ajastatud sulgemise meetod

Järgmiseks vaatleme, kuidas arvuti automaatselt kindla aja möödudes sulgeda. See on kasulik näiteks siis, kui soovite arvuti sulgeda pärast pikka ülesannet või kindla ooteaja järel. Pythoni time-mooduli abil saab seda lihtsalt rakendada.

2.1 Mis on ajastamisfunktsioon?

Ajastamisfunktsioon tähendab kindla aja möödudes etteantud tegevuse sooritamist. Pythoni puhul saab kasutada time.sleep() funktsiooni, mis peatab skripti määratud ajaks ning seejärel käivitab tegevuse (antud juhul arvuti sulgemise).

2.2 Põhiline ajastatud sulgemine

Allpool on näide Pythoni skriptist, mis sulgeb arvuti määratud minutite pärast.

import time
import os

def shutdown_timer(minutes):
    seconds = minutes * 60
    print(f"{minutes} minuti pärast sulgeb arvuti.")
    time.sleep(seconds)
    os.system("shutdown /s /t 1")

# Sulgeb arvuti 5 minuti pärast
shutdown_timer(5)

2.2.1 Koodi selgitus

  • shutdown_timer() funktsioon: Võtab sisendiks minutid, teisendab need sekunditeks ja kasutab time.sleep(), et oodata enne sulgemise käivitamist.
  • Argumendi määramine: Funktsioonile antakse ooteaeg minutites. Näites on määratud 5 minutit, kuid seda saab kohandada vastavalt vajadusele.

2.3 Ajastatud sulgemise rakendused

Ajastamisfunktsiooni saab kasutada mitmel moel.

2.3.1 Pikkade ülesannete järel

Näiteks suurte failide allalaadimise või video kodeerimise järel saab arvuti automaatselt sulgeda. Nii ei pea pidevalt kontrollima, kas töö on lõppenud.

2.3.2 Planeeritud sulgemine

Kui on vaja arvuti teatud ajal sulgeda (nt öösel), on ajastamisfunktsioon ideaalne lahendus. Samuti sobib see olukordadesse, kus arvuti jäetakse pikaks ajaks järelevalveta.

2.3.3 Kohandatud ajastus

Lisaks time.sleep()-i kasutamisele saab skripti muuta interaktiivseks, nii et kasutaja sisestab ise ooteaja.

import time
import os

minutes = int(input("Sisesta sulgemiseni jäänud aeg (minutites): "))
seconds = minutes * 60
print(f"{minutes} minuti pärast sulgeb arvuti.")
time.sleep(seconds)
os.system("shutdown /s /t 1")

2.4 Tähtsad märkused

Ajastamisfunktsiooni kasutamisel tuleb arvestada, et arvuti taaskäivitamisel või skripti katkestamisel võib sulgemine ära jääda. Samuti võib pooleli olevate oluliste ülesannete katkestamine põhjustada andmekadu või süsteemivigu.

2.5 Kokkuvõte

time-mooduliga ajastatud sulgemine on väga mugav tööriist pärast ülesannete lõpetamist arvuti automaatseks sulgemiseks. See sobib eriti hästi pikkade ülesannete või kindlal ajal planeeritud sulgemise jaoks, säästes energiat ja automatiseerides töövoogu.

侍エンジニア塾

3. Kuidas ajastada arvuti sulgemine kindlal kellaajal

Kui on vaja arvuti sulgeda kindlal kellaajal, saab seda teha Pythoni datetime-mooduli abil. Näiteks öösel pärast varundamise lõpetamist või siis, kui soovite arvuti kindlal ajal automaatselt välja lülitada.

3.1 Mis on datetime-moodul?

datetime-moodul võimaldab hallata kuupäevi ja kellaaegu. Selle abil saab võrrelda praegust aega tulevase ajaga ning käivitada sulgemise õigel hetkel.

3.2 Põhiline skript

Allpool on näide skriptist, mis sulgeb arvuti määratud kellaajal.

import os
import time
from datetime import datetime

def shutdown_at_time(target_hour, target_minute):
    # Praegune aeg
    current_time = datetime.now()
    target_time = current_time.replace(hour=target_hour, minute=target_minute, second=0, microsecond=0)

    # Kui aeg on juba möödas, lükatakse see järgmisele päevale
    if current_time > target_time:
        target_time = target_time.replace(day=current_time.day + 1)

    # Ooteaja arvutamine
    time_diff = (target_time - current_time).total_seconds()

    print(f"Sulgemine on ajastatud: {target_time.strftime('%H:%M')}")
    time.sleep(time_diff)

    # Sulgemise käivitamine
    os.system("shutdown /s /t 1")

# Ajasta sulgemine kell 23:30
shutdown_at_time(23, 30)

3.3 Koodi selgitus

  • datetime.now(): tagastab praeguse aja.
  • target_time: määrab sihtaja (nt 23:30).
  • Aja korrigeerimine: kui määratud aeg on juba möödas, seatakse see järgmisele päevale.
  • time.sleep(): ootab sulgemiseni jäänud aja sekundites.
  • os.system(): täidab sulgemiskäsu.

3.4 Kasutusstsenaariumid

3.4.1 Öised tööülesanded

Kui näiteks öine varundamine või failide kopeerimine lõppeb, saab arvuti automaatselt sulgeda. Näiteks 23:30 sulgemise määramine säästab vajaduse arvuti käsitsi välja lülitada.

3.4.2 Energia säästmine

Automaatne väljalülitamine pärast tööpäeva lõppu aitab energiat kokku hoida ja vähendab turvariske.

3.5 Kasutaja sisestatud aeg

Kasutaja võib sisestada ise kellaaja, millal arvuti sulgeda.

import os
import time
from datetime import datetime

def shutdown_at_time():
    target_hour = int(input("Sisesta tund (24h formaadis): "))
    target_minute = int(input("Sisesta minut: "))

    current_time = datetime.now()
    target_time = current_time.replace(hour=target_hour, minute=target_minute, second=0, microsecond=0)

    if current_time > target_time:
        target_time = target_time.replace(day=current_time.day + 1)

    time_diff = (target_time - current_time).total_seconds()
    print(f"Sulgemine ajastatud: {target_time.strftime('%H:%M')}")
    time.sleep(time_diff)
    os.system("shutdown /s /t 1")

shutdown_at_time()

3.6 Tähtsad märkused

  • Süsteemi olek: veendu, et olulised tööd oleks lõpetatud, enne kui sulgemine toimub, et vältida andmekadu.
  • OS-i erinevused: sulgemiskäsud võivad erineda Windowsis, Linuxis ja macOS-is, seega tuleb vastavalt kohandada.

3.7 Kokkuvõte

datetime-mooduli abil saab arvuti kindlal ajal sulgeda. See sobib hästi öiste tööde või energiahalduse jaoks, pakkudes paindlikkust ja automatiseerimist.

4. Arvuti sulgemine subprocess-mooduli abil

subprocess-moodul pakub Pythoni skriptides süsteemikäskude täitmiseks paindlikuma ja võimsama viisi kui os.system(). See võimaldab paremat veakäsitlust ja käsu tulemuste kontrollimist.

4.1 Mis on subprocess-moodul?

subprocess-moodul võimaldab Pythoni kaudu käivitada väliseid käske ja programme. Erinevalt os.system()-ist saab siin hõlpsalt hallata vigu ja tulemusi.

4.2 Põhiline skript

Allpool on näide Windowsi arvuti sulgemiseks:

import subprocess

def shutdown_computer():
    try:
        # Windowsi sulgemiskäsk
        subprocess.run(["shutdown", "/s", "/t", "1"], check=True)
        print("Sulgemine algab.")
    except subprocess.CalledProcessError as e:
        print(f"Sulgemine ebaõnnestus. Viga: {e}")

shutdown_computer()

4.3 Koodi selgitus

  • subprocess.run(): käivitab käsu. Käsk antakse listina.
  • check=True: tekitab vea, kui käsk ebaõnnestub.
  • CalledProcessError: erind, mida saab kasutada vea põhjuse tuvastamiseks.

4.4 Veakäsitlus

subprocess-mooduli abil saab hõlpsalt hallata olukordi, kus sulgemiskäsk ebaõnnestub, näiteks kui kasutajal puuduvad õigused.

import subprocess

def shutdown_computer():
    try:
        subprocess.run(["shutdown", "/s", "/t", "1"], check=True)
        print("Sulgemine algab.")
    except subprocess.CalledProcessError as e:
        print(f"Sulgemine ebaõnnestus. Viga: {e}")
    except Exception as e:
        print(f"Tekkis ootamatu viga: {e}")

shutdown_computer()

4.5 Linux ja macOS

Subprocess toimib ka teistes süsteemides:

import subprocess

def shutdown_computer():
    try:
        subprocess.run(["shutdown", "-h", "now"], check=True)
        print("Sulgemine algab.")
    except subprocess.CalledProcessError as e:
        print(f"Sulgemine ebaõnnestus. Viga: {e}")

shutdown_computer()

4.6 Kasutusnäited

4.6.1 Sulgemine pärast pikaajalist ülesannet

import subprocess

def perform_task_and_shutdown():
    try:
        subprocess.run(["python", "long_running_task.py"], check=True)
        subprocess.run(["shutdown", "/s", "/t", "1"], check=True)
        print("Ülesanne lõpetatud, arvuti sulgub.")
    except subprocess.CalledProcessError as e:
        print(f"Tekkis viga: {e}")

perform_task_and_shutdown()

4.6.2 Rakenduse sulgemise järel

import subprocess
import time

def shutdown_after_closing_app():
    try:
        subprocess.run(["jupyter", "lab", "stop"], check=True)
        print("Jupyter Lab suleti.")
        time.sleep(2)
        subprocess.run(["shutdown", "/s", "/t", "1"], check=True)
    except subprocess.CalledProcessError as e:
        print(f"Viga: {e}")

shutdown_after_closing_app()

4.7 Kokkuvõte

subprocess-moodul võimaldab Pythonis arvuti sulgemist täpsemalt juhtida kui os.system(). See sobib keerulisemate stsenaariumide jaoks, kus on vaja vigade käsitlemist või rakenduste lõpetamist enne arvuti sulgemist.

侍エンジニア塾

5. Kokkuvõte

Selles artiklis vaatasime erinevaid viise, kuidas Pythoni abil arvutit sulgeda. Iga meetod sobib erinevatesse olukordadesse – alates lihtsatest skriptidest kuni keerukamate lahendusteni.

5.1 Põhiline sulgemismeetod

os-mooduli kasutamine on kõige lihtsam viis arvuti sulgemiseks. See töötab Windowsis, Linuxis ja macOS-is ning sobib hästi ka algajatele.

5.2 Ajastatud sulgemine

time-mooduli abil saab määrata, et arvuti sulguks pärast kindla aja möödumist. See on kasulik näiteks pikkade ülesannete lõpus või planeeritud automaatseks väljalülitamiseks.

5.3 Sulgemine kindlal kellaajal

datetime-mooduli abil saab arvuti sulgeda täpselt määratud ajal. See sobib energia kokkuhoiuks või öiste tööde automatiseerimiseks.

5.4 Subprocess-moodul

subprocess-moodul pakub täiustatud juhtimist: parem veakäsitlus, tulemuste kontroll ja võimalus sulgeda arvuti alles pärast teiste programmide või ülesannete lõpetamist.

5.5 Millist meetodit valida?

  • Lihtsateks ülesanneteks: os-moodul.
  • Kui vaja ajastust minutite kaupa: time-moodul.
  • Kui vaja sulgeda kindlal kellaajal: datetime-moodul.
  • Kui vaja keerukamat juhtimist ja veakäsitlust: subprocess-moodul.

5.6 Lõppsõna

Python ei ole vaid programmeerimiskeel, vaid ka võimas tööriist igapäevaste toimingute automatiseerimiseks. Sulgemisskriptide abil saate muuta oma töövoo tõhusamaks, säästa energiat ja aega ning kohandada lahendusi vastavalt enda vajadustele.