Erinevus lehekülje "Python" redaktsioonide vahel
(→PostgreSQL andmebaasi kasutamine) |
(→PostgreSQL andmebaasi kasutamine) |
||
148. rida: | 148. rida: | ||
* cur.fetchall() tagastab vastused tupledena | * cur.fetchall() tagastab vastused tupledena | ||
+ | |||
+ | ===DNS=== | ||
+ | |||
+ | Pyhtoni seest DNS kasutamiseks sobib kasutada dnspython http://www.dnspython.org/ tarkvara, paigaldamiseks Debian keskkonnas tuleb öelda | ||
+ | |||
+ | # apt-get install python-dnspython | ||
+ | |||
+ | Selline skript esitab tekstifailis toodud domeeninimedele vastavate A kirjete ip aadressid | ||
+ | |||
+ | import dns.resolver | ||
+ | |||
+ | for rida in open ('hostid'): | ||
+ | answers = dns.resolver.query(rida.rstrip(), 'A') | ||
+ | for rdata in answers: | ||
+ | print rida.rstrip() + " " + str(rdata) | ||
===Kasulikud lisamaterjalid=== | ===Kasulikud lisamaterjalid=== |
Redaktsioon: 25. veebruar 2010, kell 00:41
Sisukord
Sissejuhatus
Python http://www.python.org/ ...
2010 aastal on levinud kasutada kahte erinevat Pyhton keele põlvkonda, sõltuvalt kasutusalast võib see olla oluline, kumba konkreetsel juhul eelistada
- 2.x - pikka aega kasutuses olnud versioon, suhteliselt palju tarkvara töötab sellega
- 3.x - uuem versioon, nt teksti vs binari failide käsitluse osa on oluliselt muutunud
Stringioperatsioonid
for rida in open ('urlid'): rida = rida.rstrip() parts = rida.split(' ') parts = tuple(parts) print ('Protokoll: %s, teenuse hostname: %s' % parts)
kus
- for tsükkel loeb rida haaval sisu
- rida.rstrip() eemaldab rea lõpust reavahetuse märgi
- rida.split(' ') moodustab stringist tühiku kohtadelt listi
- tuple(parts) teisendab listi tupleks
- print esitab tuple parts sisu kasutades formateeringut
Failioperatsioonid
Tekstifailist lugemiseks sobib kasutada nt sellist järgnevust
for rida in open ('urlid.txt'): print rida.rstrip()
kus
- rstrip() eemaldab rea lõpust reavahetuse märgi
- lugemine toimub for tsükli abil rida haaval
Tekstifaili kirjutamiseks sobib kasutada nt sellist järgnevust
read=('loomaaed.tartu.ee', 'kuutorvaja.eenet.ee', 'www.eesti.ee') myfile = open ('urlid','w') for rida in read: myfile.write (rida + '\n') myfile.close()
kus
- read - on tuple element, mis on massiivi moodi konstruktsioon, kuid mille sisu ei saa peale moodustamist muuta
- kirjutamine toimub for tsüki abil rida haaval
HTTP
Skript http päringu vastuse päise elemendi esitamiseks
import httplib conn = httplib.HTTPConnection("www.python.org") conn.request("GET", "/index.html") r1 = conn.getresponse() print r1.getheader('last-modified')
Lihtsa HTTP serveri, mis serveerib üle HTTP käesoleva kataloogi sisu, saab käivitada selliselt
$ python -m SimpleHTTPServer 8080 Serving HTTP on 0.0.0.0 port 8080 ...
SMTP
Skript saadab smtp serveri kaudu välja kirja
import smtplib fromaddr = "From: Priit Kask <priit@loomaaed.tartu.ee>" toaddrs = "To: Mart Kask <mart@loomaaed.tartu.ee>" msg = fromaddr + "\n" + toaddrs + "\nSubject: test" + "\nkirja sisu" server = smtplib.SMTP('192.168.1.250') server.set_debuglevel(1) server.sendmail(fromaddr, toaddrs, msg) server.quit()
Massiiv, for ja try/except/else konstruktsioon
Skript
- kirjeldab massiivi URLID
- käib läbi massiivis URLID toodud hostide /index.html ressursid
- kui ressursi poole ei õnnestu pöörduda püütakse see try/except poolt kinni
import httplib URLID = ('www.python.org', 'kuutorvaja.eenet.ee', 'seda.pole') for i in URLID: try: conn = httplib.HTTPConnection(i) conn.request("GET", "/index.html") except: print "ei saa avada http://" + i + "/index.html" else: r1 = conn.getresponse() print i + " " + r1.getheader('content-length')
Käivitamisel esitatakse nt selline väljund
$ python for.py www.python.org 16961 kuutorvaja.eenet.ee 267 ei saa avada http://seda.pole/index.html
Unicode
Skript UTF-8 formaadis faili kirjutamiseks (sisuks on Ä ja à tähed)
file = open('utf8data.txt', 'w', encoding='utf-8') size = file.write('\xc4\xc3\n') file.close ()
PostgreSQL andmebaasi kasutamine
Psycopg http://initd.org/psycopg/ võimaldab Pythonist kasutada PostgreSQL andmebaasi. Tarkvara paigaldamiseks Debian operatsioonisüsteemis sobib öelda
# apt-get install python-psycopg2
Skript küsib andmebaasist public.kasutajad tabelist kahte väärtust
import psycopg2 conn = psycopg2.connect("dbname=baasinimi host=192.168.1.247 user=kasutajanimi password=kasutajaparool") cur = conn.cursor() cur.execute("SELECT nimi, vanus FROM kasutajad where nimi = 'Priit Kask';") read = cur.fetchall() for rida in read: print ('Nimi: %s, vanus: %s' % rida) cur.close() conn.close()
kus
- cur.fetchall() tagastab vastused tupledena
DNS
Pyhtoni seest DNS kasutamiseks sobib kasutada dnspython http://www.dnspython.org/ tarkvara, paigaldamiseks Debian keskkonnas tuleb öelda
# apt-get install python-dnspython
Selline skript esitab tekstifailis toodud domeeninimedele vastavate A kirjete ip aadressid
import dns.resolver for rida in open ('hostid'): answers = dns.resolver.query(rida.rstrip(), 'A') for rdata in answers: print rida.rstrip() + " " + str(rdata)
Kasulikud lisamaterjalid
- http://www.python.org/
- Learning Python, 4rd editon (v. 2.6 ja 3.0), Mark Lutz