KeLBaYKuŞ Forum

Geri git   KeLBaYKuŞ Forum > Bilgisayar & İletişim > İşletim Sistemleri


İşletim Sistemleri - Windows ve Linux hakkında bilgiler, haberler ve eklentiler


Cevapla
 
Seçenekler
  #1 (permalink)  
Alt 20.09.07, 18:33
CherheM - ait Kullanıcı Resmi (Avatar)
Acemi Baykuş
 
Kaydolma: 30.08.06
Erkek
Mesajlar: 130
Teşekkürler: 0
Üyeye 13 kez teşekkür edildi
Standart Web tabanlı uygulamalar için Python

Bu belgede basit ve örnekli hatta diğer web ******ing dilleriyle karşılaştırmalı (array,include gibi) olarak önemli komut,değişken ve nesnelerin Python mantığına ve doğasına göre nasıl olması gerektiği anlatılmaktadır. Bu belgeye son hali verilmeden önce referans belgenin tamamlanması ile cgi tarzı çalışma dışında Python ile Php ve ASP tarzında html içine gömülü sunucu tarafından sunulan (server pages) konusunda da önemli bilgiler bulabileceksiniz. Ayrıca dünaydaki en güçlü açık kaynak kodlu veritabanı motoru olan PostgreSQL ile bağlantılar konusuda işlenecektir.

Bu belge okunurken dikkat edilmesi gerekenler iki '-' işareti içinde verilenler kodlar ve ekran çıktılarıdır ve bunlar birebir denenmişlerdir. Görsel tarayıcı yerine çıktılarda Python yorumlayıcı çıktısına ve bazı durumlarda lynx programi ekran çıktılarına başvurulmuştur.

#!/usr/bin/python

print"*******-type: text/html\n"
print"Merhaba"

Bu program ilk.py adıyla cgi dizinine kaydedilmesi ve
UyarıGörmek için lütfen buradan üye olunuz.
ile çağırılması ile ekrana

Merhaba

yazılır.

Python, Gelecek Linux veya başka bir linux kullanıyor iseniz bunlar zaten sisteminize kurulu gelecektir. Bir terminalde komut satırında python yazdığınızda python yorumlayıcısı çalışacaktır:

[root@localhost /root]# python
Python 1.5.2 (#1, Dec 10 2000, 05:46:36)
[GCC 2.96 20000731 (Gelecek Linux 1.0)] on linux-i386 Copyright 1991-1995
Stichting Mathematisch Centrum, Amsterdam
>>>

Ve Python ile cgi programları yazarken kullanacağımız Python adresi de aksi gösterilmedikçe /usr/bin/python olacaktır. Bu yolun başında gerekli olan shebang yani #! işareti olmalıdır.

Herhangi bir editör yardımıyla yazdınız programları yerel web sunucunuzda çalıştırmak için yazığınız programa bir ad verip .py uzantısı ile /var/www/cgi-bin dizini altina kayıt etmek ve chmod +x ile çalıştırılma hakkı vermek yeterli olacaktır.

Bu açıklamalarda Python'un sadece web tarafı cgi ve gömülü olarak ve onunla ilintili nesneleri anlatılacaktır. Python'a başlangıç, dilin mantığı ile ilgli çok detaylı bilgileri Mustafa BAŞER tarafından hazırlanan python.kolayweb.com adresinde bulabilirsiniz. Programlarınızın içine açıklama satırları eklemek isterseniz satırın başına # işareti koymanız o satırının sonuna kadar dikkate alınmamasını sağlar. Ya da uzunca satıların yorumlanmamasını istediğinizde satırların başına

""" ( üç den den)

ve sonuna

""" koymanız yerinde olur.

Python'da değişkenin tanımlama tipi yoktur. a değişkeni sayı da olabilir, kelime veya harf de. Bu sizin isteğinize kalmıştır.

a=223
b="deneme"

Okunan ve atanan değerler eğer uygun şartlarda ise sayıya veya kelime haline şu şekilde çevrilir: c="123" bir kelime olarak işlenirken ve sadece ekleme yapılır. d="7" int(c)+int(d) ile sonuç matematiksel olarak sonuçlanır:

>>> c="123"
>>> d="7"
>>> print c+d
1237
>>> print int(c)+int(d)
130

Daha önce sayı olarak tanımlanmış değişken ise string ile çevrilir.
f=988
g=12
str(f)+str(g) ile iki kelimenin eklenmesi ile sonuçlanır:

>>> f=988
>>> g=12
>>> print f+g
1000
>>> print str(f)+str(g)
98812

Bu konular çok detaylı, örnekli ve Türkçe olarak referans belgemizde anlatılmıştır.

Değişkenleri küçük harften büyük harfe veya tam tersine şu şekilde çeviririz:

>>> import string
>>> a="istanbul"
>>> print string.upper(a)
İSTANBUL
>>> print string.lower(a)
istanbul

Değişkenlerin belli bir kısmını yazdırmak için hiçbri komuta başvurmadan sadece Pythonun güzelliğinden yararlanırız:

>>> a="istanbul çok güzeldir"
>>> print a[9:13]
çok

Buradaki ifade a değişkeninden 9 karakterden başlayarak 13 kadar (dahil değil) ekrana basmasını söyler.

Bir değişkeni açıklamalar ile birleştrimek istersek ya " " işaretleriyle ayrık olarak yazıp aralara değişkenin adını yazarız yada daha formatlı bir stil için sadece oraya C gibi dillerde de bulunan %s gibi ifadelerle açıklamayı bozmadan içine gömebiliriz:

>>> a=elma
>>> print "Ben ", a, "yerim."
Ben elma yerim.

>>> a=elma
>>> print "Ben %s yerim." % (a)
Ben elma yerim.

Python'da yazılan programın denetimi için diğer dillerde de bulunan if/elif/else, for/else, while/else kalıp karşılaştırma, yürütme ve sonlandırma ifadeleri vardır. Case/switch ifadesi ise doğrudan yoktur. Fakat if/elif/else ile rahatlıkla üretilir. Daha kısa basit bir case/switch özelliği case/switch örneği Pythonun özgü olarak sözlük değişkeni ile (dictionary) şu şekilde üretilir:

>>> seçim="havuç"
>>> print {"elma":1500,
... "havuç":900,
... "portakal":1200,
... "muz":2300}[seçim]
900

Çok boyutlu diziler veya matris tipinde değişken tanımlaması aslında Python'da standart olan liste şeklinde nesneden faydalanılır: Biindiği üzere; dizi=[0,1,2] bir liste tipi değişken tanımlamasıdır. bunu ihtiyaçlarımız doğrultusudna şu şekile getirirsek: cokludizi=[[ali,344],[kemal,887],[mehmet,421]]

0 - 0,1
1 - 0,1
2 - 0,1 şeklinde bir matris oluşturur.

>>> cokludizi=[["ali",344],["kemal",887],["mehmet",421]]
>>> print cokludizi[0] [1]
344
>>> print cokludizi[2] [0]
mehmet

Bu şekilde yazılarak başka dillerdeki array mantığı daha basit bir şekilde elde edilmiş olur. Yine bu matrislere yeni satılar ekleme veya matrisleri birleştirme append() komutu ile yapılır.

>>> cokludizi.append(["veli",554])
>>> print cokludizi
[['ali', 344], ['kemal', 887], ['mehmet', 421], ['veli', 554]]
>>> print cokludizi[3] [0]
veli

silme ise del ile yapılır.

>>> del cokludizi[3]
>>> print cokludizi
[['ali', 344], ['kemal', 887], ['mehmet', 421]]

Bu diziyi kendi içinde sıralamak için ise sort() komutu kullanılır:

>>> print cokludizi
[['ali', 344], ['kemal', 887], ['mehmet', 421], ['cem', 954]]
>>> cokludizi.sort()
>>> print cokludizi
[['ali', 344], ['cem', 954], ['kemal', 887], ['mehmet', 421]]

diziyi tersine sıralamak için ise reverse() komutu kullanılır:

>>> cokludizi.reverse()
>>> print cokludizi
[['mehmet', 421], ['kemal', 887], ['cem', 954], ['ali', 344]]

Bu matristen kesit almak için ise komut bile kullanmaya gerek yok diğer dillerdekinin aksine sadece kesitin başlagı satırı(dahil) ve sonlanma satırı hariç belirtmek yeterlidir:

>>> print cokludizi[1:3]
[['kemal', 887], ['cem', 954]]

Python'da da diğer dillerdeki gibi ve daha da ileri bir şekilde çok kullanılan işlemler için class ve alt bağımlı veya bağımsız fonksiyon tanımlamaları mevcuttur. Bunun için yukarıda adı geçen belgede (python.kolayweb.com) def ve class bölümlerini inceleyiniz.

Python nesne tabanlı bir dil olduğundan direk bir komut olmasa bile işimizi görecek komut dizisi ve nesneyi kolayca ve çok mantıksal bir şekilde oluşturabiliriz.

Örneğin aşağıdaki ek.html isimli dosyayı /var/www/html altına kopyalayıp Python ile yaptığımız cgi programının içine çağırarak ekletelim.

<HTML>
<HEAD>
<TITLE>)</TITLE>
****** NAME="GENERATOR" *******="web-python">
</HEAD>

<BODY>
<H1>MERHABA</H1>
<H2B>Bu Python tarafından getirilen ek.html belgesidir</H2>

</BODY>
</HTML>

Bunun çağıran ve kendinden birtakım işlemler yapan a.py isimili dosya aşağıda olup /var/www/cgi-bin/ altına kopyalanmalıdır.

#!/usr/bin/python

print"*******-type: text/html\n"

print open("../html/ek.html").read()

print"Buradan sonra cgi içindeki a.py ile yazılmaktadır."
print"cgi dan gelen yazılar........"
a=3
b=5
print a+b

Bir metin tabanlı tarayıcı olan lynx'deki görüntü şu şekilde olacaktır:

MERHABA

Bu python tarafından getirilen ek.html belgesidir Buradan sonra cgi
içindeki a.py ile yazılmaktadır. cgi dan gelen yazılar........ 8

Burada bir miktar İnternet kısmına giriş yapmış popüler web ******ing dillerinin en çok kullanıldıkları amaçlardan birini vermiş olduk. Şimdi buradan devam edip yine html dosyası içinde yollanan form bilgilerinin alınması ve işlenmesini inceleyelim. Aşağıda q.html isimli bir html dosyası çeşitli form tiplerinde değerleri q.py isimli pyton programına göndermektedir:

<HTML>
<HEAD>
<TITLE>Form</TITLE>
****** NAME="GENERATOR" *******="web-python">
</HEAD>

<BODY>
<FORM ACTION="http://localhost/cgi-bin/q.py" METHOD="post">

<INPUT TYPE="text" NAME="ad" VALUE="">
<INPUT TYPE="text" NAME="ad2" VALUE="">
<INPUT TYPE="checkbox" NAME="ad3" VALUE="şikayet">
<INPUT TYPE="radio" NAME="ad4" VALUE="düşünce">
<INPUT TYPE="submit" VALUE="gönder">
</FORM>
</BODY>
</HTML>

#!/usr/bin/python

import cgi
print"*******-type: text/html\n"

formdan=cgi.FieldStorage()

print "Okunan 1.değer:",formdan['ad'].value
print "Okunan 2.değer:",formdan['ad2'].value
print "Okunan 3.değer:",formdan['ad3'].value
print "Okunan 4.değer:",formdan['ad4'].value

http://localhost/q.html'nin çağırılması ile girilen değerlerin Mustafa,2003,diğer checkbox ve radio düğmeleri işaretli ise çıkan sonuç şu şekilde olur:

Okunan 1.değer: Mustafa

Okunan 2.değer: 2003

Okunan 3.değer: şikayet

Okunan 4.değer: düşünce

Python ile dizinler ve dosyalar üstünde işlem yapma şu şekilde olur:

Yeni bir dosya oluşturmak istiyorsanız, open("yenidosya.txt","w") komutunu girmeniz yeterlidir. Daha önceden oluşturlmuş dosyaya bir bilgi yazmak içinde yanı komut dizisi kullanılır. Dosyayı yazmak değilde okumak içi açıyorsak sadece w (write/yaz) harfini r (read/oku) ile değiştirmek yeterlidir. Bir değer yazmak için write(), okumak için ise readline() veya readlines() kullanılır. Şimdi geniş bir örnek vererek tüm nesneleri kulllanalım.

>>> a=open("yenidosya.txt","w")
>>> a.write("denemek için yazılanlar")
>>> a=open("yenidosya.txt","r")
>>> print a.readline()
denemek için yazılanlar

Açtığımız dosyaları koyabileceğimiz dizinlerin oluşabilmesi için dizin de açabilir veya silebiliriz. Bunun için önce os modulunu programa dahil etmek gereklidir.

>>> import os
>>> os.mkdir("yenidizin")
>>> os.rmdir("yenidizin")

Bu nesneler bulunduğunuz dizinde veya genel olarak /root dizininde yenidizin isimli bir dizin oluşturur ve siler. os modulune bağlı olarak os.getcwd() bulunulan dizinin ismini verir: /root gibi. os.listdir() ise dizin içeriğini listeler.

>>> print os.getcwd()
/root
>>> print os.listdir("/var/www/cgi-bin/")
['printenv', 'pmz.py', 'construct', 'pmz.py~', 'spsp.py', 'spsp.py~',
'q.py', 'ad.py', '.q.py.swp', 'a.py', 'a.py~', 'q.py~']

Buraya kadar anlatılanlar ile çeşitli uygulamalar yazıp, Kolayweb'de bir adres edinip koyabilirsiniz.
Referans Belgeler

UyarıGörmek için lütfen buradan üye olunuz.
Web sitesi Guido Von Rossum İngilizce
Learning Python Kitap Mark Lutz, David Ascher İngilizce
UyarıGörmek için lütfen buradan üye olunuz.
Web sitesi İngilizce

2001, Gelecek A.Ş Dokümantasyon Servisi
Alıntı ile Cevapla
Sponsor
  #2 (permalink)  
Alt 20.09.07, 22:49
ZipMaker - ait Kullanıcı Resmi (Avatar)
İlk KeLBaYKuŞ!
 
Kaydolma: 28.08.06
Erkek
Mesajlar: 12.101
Teşekkürler: 516
Üyeye 12.629 kez teşekkür edildi
Standart

teşekkürler
Alıntı ile Cevapla
Cevapla






© 2013 KeLBaYKuŞ Forum | AtEsH
Telif Hakları vBulletin v3.8.4 - ©2000-2024 - Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0'e Aittir.
Açılış Tarihi: 29.08.2006