Erinevus lehekülje "Python" redaktsioonide vahel
(→LDAP) |
(→Kasulikud lisamaterjalid) |
||
236. rida: | 236. rida: | ||
Väljastatakse kahe elemendilise tuple esimene element. | Väljastatakse kahe elemendilise tuple esimene element. | ||
+ | |||
+ | ===UDP sõnumi saatmine=== | ||
+ | |||
+ | Aadressil 192.168.10.35:514/udp töötavale syslogile sõnumi saatmiseks sobib selline järgnevus | ||
+ | |||
+ | import socket | ||
+ | port = 514 | ||
+ | host = "192.168.10.35" | ||
+ | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | ||
+ | s.sendto("test sonum\n", (host, port)) | ||
===Kasulikud lisamaterjalid=== | ===Kasulikud lisamaterjalid=== |
Redaktsioon: 25. veebruar 2010, kell 20:37
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.txt'): rida = rida.rstrip() parts = rida.split(' ') parts = tuple(parts) print ('Protokoll: %s, teenuse hostname: %s' % parts)
kus
- for tsükkel loeb rida haaval sisu failist urlid.txt
- 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
- myfile = open ('urlid','w') - tekstifail urlid avatakse lugemiseks ja kirjutamiseks
- 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()
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'): try: answers = dns.resolver.query(rida.rstrip(), 'A') for rdata in answers: print rida.rstrip() + " " + str(rdata) except dns.resolver.NXDOMAIN: print ('Domeeninimel %s puudub A kirje' % rida.rstrip())
LDAP
Pythoni seest LDAP kataloogi kasutamiseks sobib tarkvara python-ldap http://www.python-ldap.org/, paigaldamiseks Debian keskkonnas tuleb öelda
# apt-get install python-ldap
Skript LDAP kataloogist päringu tegemiseks, küsitakse kõik andmed
import ldap l = ldap.initialize('ldap://192.168.1.247') result_set = l.search_s('dc=loomaaed,dc=tartu,dc=ee',ldap.SCOPE_SUBTREE,'(objectClass=*)',['cn', 'uid', 'loginShell']) for i in result_set: print i
Tulemuseks olev result_set on list tupledest, viimane for tsükkel esitab nende tuplede väärtused, üks real.
Help kasutamine
>>> help() Welcome to Python 2.5! This is the online help utility. If this is your first time using Python, you should definitely check out the tutorial on the Internet at http://www.python.org/doc/tut/. Enter the name of any module, keyword, or topic to get help on writing Python programs and using Python modules. To quit this help utility and return to the interpreter, just type "quit". To get a list of available modules, keywords, or topics, type "modules", "keywords", or "topics". Each module also comes with a one-line summary of what it does; to list the modules whose summaries contain a given word such as "spam", type "modules spam". help>
Sisestades help> prompti järele huvipakkuva mooduli nime saab selle mooduli kohta teavet, nt
help> smtplib Help on module smtplib: NAME smtplib - SMTP/ESMTP client class. FILE /usr/lib/python2.5/smtplib.py MODULE DOCS http://www.python.org/doc/current/lib/module-smtplib.html DESCRIPTION This should follow RFC 821 (SMTP), RFC 1869 (ESMTP), RFC 2554 (SMTP Authentication) and RFC 2487 (Secure SMTP over TLS). ...
Programmide käivitamine shellist
Aadressil http://jimmyg.org/blog/2009/working-with-python-subprocess.html on toodud mitmeid näiteid subprocess mooduli kasutamise kohta
import subprocess pipe = subprocess.Popen(["df", "-h"], stdout=subprocess.PIPE) print pipe.communicate()[0]
Väljastatakse kahe elemendilise tuple esimene element.
UDP sõnumi saatmine
Aadressil 192.168.10.35:514/udp töötavale syslogile sõnumi saatmiseks sobib selline järgnevus
import socket port = 514 host = "192.168.10.35" s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto("test sonum\n", (host, port))
Kasulikud lisamaterjalid
- http://www.python.org/
- Learning Python, 4rd editon (v. 2.6 ja 3.0), Mark Lutz