Section author: Vedran Miletić
Python: parametri i funkcije ovisni o sustavu¶
module sys
(službena dokumentacija) nudi pristup objektima koje interpreter koristi i s kojima komunicira
Zadatak
Pokrenite Python 3 interpreter i učitajte modul sys
.
Otkrijte kojeg su tipa objekti
sys.ps1
isys.ps2
.Promijenite im vrijednost na drugu vrijednost po vašem izboru. Što uočavate? Fora, a? ;-)
sys.version
je verzija Pythona i program prevoditelja kojim je prevedensys.platform
je platforma (operacijski sustav)sys.modules
je rječnik učitanih modulasys.getdefaultencoding()
vraća najčešće'utf-8'
sys.getfilesystemencoding()
vraća najčešće'utf-8'
sys.getsizeof(object)
vraća veličinu objektaobject
u bajtovimasys.int_info
daje informacije o načinu spremanja cijelih brojevasys.maxsize
daje informacije o maksimalnoj duljini liste, tuplea, skupa ili rječnikasys.exit([status])
izlazi iz interpretera s povratnim kodomstatus
raspon povratnih kodova (izlaznih statusa) je 0–127 i 129–192; postoje pokušaji standardizacije značenja svakog pojedinog broja, primjerice
sysexits.h
u ljusci
bash
varijabla ljuske$?
sadrži izlazni status
sys.argv
je lista argumenata proslijeđenih Python skripti kod pokretanjaargv[0]
je ime Python skripteargv[i]
je $i$-ti argument naveden nakon imena skripte
Zadatak
Napišite Python 3 skriptu imena zadatak-argv.py
koja će nakon što je iz komandne linije pozovemo s argumentom arg1
(./zadatak-argv.py arg1
ili python3.2 zadatak-argv.py arg1
) ispisati:
Pozvali ste skriptu imena zadatak-argv.py s argumentom arg1
, pri čemu suzadatak-argv.py
iarg1
vrijednosti varijabli.Ako je prvi argument jednak
pythonversion
, onda će taj program pored toga ispisati verziju Python interpretera kojeg koristimo, u našem slučaju ‘3.2.2’.Ako je prvi argument jednak
gccversion
, onda će taj program ispisati verzi GCC-a kojom je korišteni Python interpreter preveden, u našem slučaju ‘4.2.1’.
(Uputa: razmislite kako ćete iz sys.version
izvući vrijednosti koje vam trebaju.)
Zadatak
Modificirajte program iz prethodnog zadatka tako da:
U slučaju da korisnik unese nedozvoljnu vrijednost prvog argumenta skripta na standardni izlaz za greške ispisuje poruku o tome, a zatim izlazi s izlaznim statusom 1.
U slučaju da korisnik unese manje ili više argumenata skripta na standardni izlaz za greške ispisuje poruku o tome, a zatim izlazi s izlaznim statusom 2.
(Uputa: Pogledajte u pomoći za funkciju print()
kako ispisati sadržaj na standardni izlaz za greške).
opisnik datoteke (engl. file descriptor) je cjelobrojni indeks u tablici otvorenih datoteka vezanih uz proces
svaki proces ima barem 3 opisnika: standardni ulaz, standardni izlaz i standardni izlaz za greške
objekt
sys.stdin
reprezentira standardni ulaz (opisnik 0)objekt
sys.stdout
reprezentira standardni izlaz (opisnik 1)objekt
sys.stderr
reprezentira standardni izlaz za greške (opisnik 2)
naredba
lsof
ispisuje popis otvorenih datoteka na sustavulsof -p pid
ispisuje popis datoteka koje je otvorio proces s PID-ompid
Zadatak
Isprobajte
sys.stdout.write
i objasnite na koji je način rahličit odprint()
. Prima li više od jednog argumenta? Ispisuje li novi redak? Možete li ispisati cijeli ili realan broj?Prijavite se u dva terminala ili alternativno backgroundajte Python interpreter nakon što ste u njemu otvorili proizvoljnu datoteku iz vašeg direktorija. Pronađite u popisu otvorenih datoteka vaš proces, 3 osnovna opisnika i opisnik te datoteke.