Rendszerelérés Pythonban

Kategória: Python.

User input

Az input() függvénnyel tudunk bekérni adatot konzolon a felhasználótól:

name = input('Username: ')

Ez esetben a program kiírja, hogy Username: , a futása megáll, a felhasználónak be kell írnia valamit, ami a name változóba kerül.

Megjegyzés: a 2-es Pythonban input() függvény nem létezett, helyette raw_input() volt.

Operációs rendszer elérés

Az os modul segítségével operációs rendszer jellegű feladatokat lehet végrehajtani: könyvtár- és fájlkezelést, felhasználókezelést, jogosultság kezelést stb. Szerteágazóak a lehetőségek; itt csak pár példát mutatok be:

import os
 
os.getcwd()      # lekérdezi az aktuális könyvtárat (GET Current Working Directory)
os.listdir()     # kilistázza az aktuális könyvtár tartalmát; az eredmény listába kerül
os.getlogin()    # lekérdezi a bejelentkezett felhasználó nevét
os.environ       # a környezeti változók, dict formában
os.mkdir('temp') # könyvtár létrehozása
os.chdir('temp') # belépés könyvtárba (CHange DIRectory)
os.chdir('..')   # egy szinttel feljebb lépés
os.rmdir('temp') # könyvtár törlése

Dátum

A dátumkezeléshez a datetime csomagot kell importálnunk. A pillanatnyi idő kiírása:

import datetime
d = datetime.datetime.now()
print(d) # 2021-01-21 09:33:15.167281

Az időt többé-kevésbé megfelelő formátumban írja ki; legalábbis nem a rendkívül szerencsétlen nap-hónap-év formában. A mikroszekundumos pontosság talán kissé felesleges. Ha mégis egyéb formában szeretnénk kiírni, akkor a nem túl jól megjegyezhető strftime() hívással tudjuk megformázni, pl.:

print(d.strftime('%d %B, %Y (%A)')) # 21 January, 2021 (Thursday)

A formázó karaktereket még nehezebb megjegyezni, mint a formázó függvényt; akinek szüksége van rá, az úgyis utánanéz.

Adott időpont használata:

d = datetime.datetime(2021, 1, 21, 9, 33, 15)
print(d) # 2021-01-21 09:33:15

Altatás

Ha altatni szeretnénk a programot valamennyi ideig, akkor azt a time modul sleep() függvényével tudjuk megtenni. Paraméterként az alvási időt kell megadnunk, más programozási nyelvektől eltérően sajnos nem ezredmásodpercben, hanem másodpercben (tizedes tört is megadható):

import time
time.sleep(5)

Reflexió

A kód saját magát deríti fel, és akár módosíthatja el, pl.

class C:
    n = 5
    def f(self): pass
 
c = C()
 
print(hasattr(c, 'n')) # True
print(hasattr(c, 'o')) # False
print(getattr(c, 'n')) # 5
print(hasattr(c, 'f')) # True
print(hasattr(c, 'g')) # False
 
setattr(c, 'o', 'alma')
print(c.o) #'alma'
 
delattr(C, 'n')
d = C()
print(d.n) # AttributeError: 'C' object has no attribute 'n'
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License