Kasulikke pythoni näitejuppe cgi jaoks: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Resümee puudub
Resümee puudub
50. rida: 50. rida:


<pre>
<pre>
if mymove and oppmove:
f = open('/tmp/tahvel', 'a')
  f = open('/tmp/tahvel', 'a')
data=mymove+" "+oppmove+"\n"
  data=mymove+" "+oppmove+"\n"
f.write(data)
  f.write(data)
f.close()
  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:
   data=[]  
   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:
   data=""   
   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>
"""