Kasulikke pythoni näitejuppe cgi jaoks: erinevus redaktsioonide vahel
Resümee puudub |
Resümee puudub |
||
| 50. rida: | 50. rida: | ||
<pre> | <pre> | ||
f = open('/tmp/tahvel', 'a') | |||
data=mymove+" "+oppmove+"\n" | |||
f.write(data) | |||
f.close() | |||
</pre> | </pre> | ||
Niimoodi saad programmi töö hoobilt lõpetada: | |||
<pre> | |||
import sys # see oleks siis kusagil programmi alguses teiste importide seas | |||
... | |||
sys.exit(0) | |||
</pre> | |||
Niimoodi loed failist korraga kõik read massiivi (iga rida - string - üks massiivielement) ja samas kontrollid, et kui faili pole/lugemisviga, siis handlid | Niimoodi loed failist korraga kõik read massiivi (iga rida - string - üks massiivielement) ja samas kontrollid, et kui faili pole/lugemisviga, siis handlid | ||
| 67. rida: | 73. rida: | ||
f.close() | f.close() | ||
except: | except: | ||
print "ei saanud faili avada!" | |||
sys.exit(0) # eeldab, et oled varem teinud import sys ja juba trükkinud content-type rea koos tühja vahereaga | |||
</pre> | </pre> | ||
| 78. rida: | 85. rida: | ||
f.close() | f.close() | ||
except: | except: | ||
print "ei saanud faili avada!" | |||
sys.exit(0) | |||
</pre> | </pre> | ||
Stringi kirjutamine faili lõppu lisaks: | |||
<pre> | |||
try: | |||
f = open('/tmp/myfile', 'a') # faili täielikuks ülekirjutamiseks pane 'a' asemel 'w' | |||
f.write("minulisa") # reavahetuse lisamiseks pane stringi sisse \n | |||
f.close() | |||
except: | |||
print "ei saanud faili avada!" | |||
sys.exit(0) | |||
</pre> | |||
Html vormi välja autocomplete saad niimoodi maha keerata: | Html vormi välja autocomplete saad niimoodi maha keerata: | ||
Redaktsioon: 19. oktoober 2011, kell 13:57
Scripti algusse sobib enamasti (cgitb.enable() ainult debugimise ajaks!):
#!/usr/bin/python import cgi,cgitb cgitb.enable() # see peaks siis kusagil üpris algul olema print "Content-type: text/html\n\n" print "tere tali!"
vormilt data võtmisel tasub kontrollida, kas data tuli, muidu annab Python errori:
formdata = cgi.FieldStorage()
if formdata.has_key("nimi"):
nimi=formdata['nimi'].value
if formdata.has_key("email"):
email=formdata['email'].value
if formdata.has_key("raha"):
raha=formdata['raha'].value
if formdata.has_key("now"):
now=float(formdata['now'].value)
Niimoodi saad juhusliku täisarvu:
import random # see oleks siis kusagil programmi alguses teiste importide seas ... oppmove=random.randint(0, 2) # täisarv kas 0,1,2. Juhusliku floati jaoks 0...1 tee random.random()
Niimoodi saad teha stringi täisarvuks ja täisarvu (või mistahes muu data!) stringiks:
strx="1" x=int(x) uusstrx=str(x)
NB! Kui proovid stringile arvu liita a la "abc"+1 saad errori. Enne pead arvu tegema stringiks a la "abc"+str(1)
Niimoodi saad faili lõppu midagi juurde kirjutada (open(...,'a') ehk append mode):
f = open('/tmp/tahvel', 'a')
data=mymove+" "+oppmove+"\n"
f.write(data)
f.close()
Niimoodi saad programmi töö hoobilt lõpetada:
import sys # see oleks siis kusagil programmi alguses teiste importide seas ... sys.exit(0)
Niimoodi loed failist korraga kõik read massiivi (iga rida - string - üks massiivielement) ja samas kontrollid, et kui faili pole/lugemisviga, siis handlid seda viga (siin lihtsalt data saab väärtuseks tühja array):
try:
f = open('/tmp/myfile', 'r')
data=f.readlines()
f.close()
except:
print "ei saanud faili avada!"
sys.exit(0) # eeldab, et oled varem teinud import sys ja juba trükkinud content-type rea koos tühja vahereaga
Sama, mis eelmine, aga terve fail loetakse ühe stringina:
try:
f = open('/tmp/myfile', 'r')
data=f.read()
f.close()
except:
print "ei saanud faili avada!"
sys.exit(0)
Stringi kirjutamine faili lõppu lisaks:
try:
f = open('/tmp/myfile', 'a') # faili täielikuks ülekirjutamiseks pane 'a' asemel 'w'
f.write("minulisa") # reavahetuse lisamiseks pane stringi sisse \n
f.close()
except:
print "ei saanud faili avada!"
sys.exit(0)
Html vormi välja autocomplete saad niimoodi maha keerata:
<input type="text" name="nimi" autocomplete="off">
See kood genereerib automaatselt refreshiva html lehe (now peaks olema arv: sekundid):
print """ <html> <head> <meta http-equiv="refresh" content='1;url=save.py?refreshing=1&now="""+str(now)+"""'> </head> <body> """