31 Aralık 2013 Salı

Akademik Bilişim ve Python

1-4 Şubat tarihleri arasında akademik bilişim yapılacak. Ekipten Mehmet Dursun İnce ve Barkın Kılıç Güvenlik 101 Eğitimi verecekler. Kayıtlar bitti ve şuanda 209 insan sadece Güvenlik 101 eğitimi için kayıt yaptırdı. İlk başta 50 kişiye verilmesi planlanan eğitim yoğun ilgi üzerine 100 kişiye çıkartıldı. Bu 100 kişi 209 kişi arasından yapılacak olan bir sınav ile seçilecek. Seçilme işleminin adaletli olabilmesi için her üniversiteden veya başvurulan kurumdan eşit bir şekilde seçilmesi şeklinde planlandığını tahmin ediyoruz. Biz de tabi ki eğitime başvurduk. Şunu söyleyelim ki aynı ekipte olmamız bize direk gitme şansı vermiyor. Biz de herkes gibi sınava girecek ve gitmek için yarışacağız. Yani eğitimi verecek kişiler adalete önem veriyor diyebiliriz. Bizde düşündük ve madem her kurumdan eşit sayıda insan seçilmesi muhtemel bir durum. Bir bakalım hangi kurumlardan kaçar kişi başvurmuş öğrenelim dedik. Tabi ki bu yazının Python ile ilişkisi tam da burada devreye giriyor. Bunu öğrenebilmek için küçük bir Python betiği yazdık.
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import urllib
from collections import Counter

html = urllib.urlopen("http://ab2014.mersin.edu.tr/kursBasvuruDetay.php?id=4").read()

html_icerik = BeautifulSoup(''.join(html))

tablo = html_icerik.find('table')

satirlar = tablo.findAll('tr')

liste = []
bos = 0
sayac=1

for tr in satirlar:
 sutunlar = tr.findAll('td')
 for td in sutunlar:
  if sayac==3:
   metin = td.find(text=True)
   if metin != None:
    liste.append(metin)
   else:
    bos = bos +1
  sayac += 1
 sayac=1

h = dict()
sozluk = Counter([h.setdefault(k,v) for k,v in zip([x.split()[0] for x in liste],liste)])


html_liste = open('akademikbilisim.html','w')

html = u'\n'

for i in h:
 html = html + u'

\n'

html = html + u'

\n'
html = html + u'
'+h[i]+u''+ str(sozluk[h[i]]) +u'
BELİRTİLMEMİŞ'+ str(bos) +u'
' html_liste.write(html.encode("utf-8"))
İlk önce burada kullanmış olduğumuz bs4 modülünden bahsedelim. Bu modül bir Html metnini bölebilmek için geliştirilmiştir. Python ile hazır bir şekilde gelmiyor. İlk önce bu modülü kurmamız gerekiyor. Eğer bir Linux dağıtımı kullanıyorsanız şu şekilde kurabilirsiniz.
apt-get install python-bs4
Daha fazla bilgiye buradan ulaşabilirsiniz. İlk önce http://ab2014.mersin.edu.tr/kursBasvuruDetay.php?id=4 adresine bağlanarak istediğimiz verileri çektik ve bunları bir listeye kaydederek o liste üzerinden işlem yaptık.
Aynı üniversitelerin tekrarlanmaması olayında yardım aldığımızı itiraf edelim.
Son olarak da bunları bir html sayfasına bastırdık. Siz isterseniz doğrudan yazdırabilirsiniz. Ve işte sonuç; Hangi kurumdan kaç kişi Güvenlik 101 eğitimine başvuru yapmış.
KurumKişi Sayısı
ERCİYES ÜNİVERSİTESİ4
POLİS AKADEMİSİ1
ÖZYEĞİN UNİVERSİTY1
MUGLA SİTKİ KOCMAN UNİVERSİTESİ1
BİLKENT ÜNİVERSİTESİ19
FIRAT ÜNİVERSİTESİ6
LKD1
ATM DALAMAN HAVALİMANI YAPIM VE İŞLETME A.Ş1
EFİCA1
BAHÇEŞEHİR ÜNİVERSİTESİ2
YILDIRIM BEYAZIT ÜNİVERSİTESİ1
AHMET YESEVİ UNİVERSİTESİ1
KASTAMONU ÜNİVERSİTESİ1
MEVLANA ÜNİVERSİTESİ2
EGM3
ONDOKUZ MAYIS ÜNİVERSİTESİ BİLGİ İŞLEM DAİRE BAŞKANLIĞI1
ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ1
ISPARTA ATABEY MESLEK YÜKSEK OKULU8
EASTERN MEDITERRIAN UNIVERSITY1
EGE UNIVERSITESI1
MERSİN ÜNİVERSİTESİ1
MANDALİN BİLİŞİM HİZMETLERİ1
ÜNİVERSİTE1
GAZİ ÜNİVERSİTESİ3
ÇÖZÜM GÜMRÜKLEME1
KARAMANOĞLU MEHMETBEY ÜNİVERSİTESİ1
GAZİANTEP ÜNİVERSİTESİ BİLGİ İŞLEM DAİRE BAŞKANLIĞI1
ÇANAKKALE ONSEKİZ MART ÜNİVERSİTESİ3
NECMETTİN ERBAKAN ÜNİVERSİTESİ 3
İSTANBUL AYDIN ÜNİVERSİTESİ2
TRAKYA ÜNİVERSİTESİ1
SAKARYA ÜNİVERSİTESİ2
EPATİ BİLİŞİM2
YILDIZ TEKNİK ÜNİVERSİTESİ2
ANTALYA INTERNATIONAL UNİVERSITY1
ULUDAĞ ÜNİVERSİTESİ1
ZİRVE ÜNİVERSİTESİ1
ORTA DOĞU TEKNİK ÜNİVERSİTESİ1
T.C. ADIYAMAN ÜNİVERSİTESİ1
ERDEMLİ ATL, TL VE METEM1
ARTVİN ÇORUH ÜNİVERSİTESİ1
SELÇUK ÜNİVERSİTESİ1
TÜRKİYE BİLİŞİM DERNEĞİ3
ABANT İZZET BAYSAL ÜNİVERSİTESİ1
SAÜ1
İZMİR YÜKSEK TEKNOLOJİ ENSTİTÜSÜ1
MEHMET AKİF ERSOY ÜNİVERSİTESİ2
BAHCESEHİR UNİVERSİTESİ1
ANKARA ÜNİVERSİTESİ11
ÖĞRENCİ1
PROJE KUTUSU ELEKTRONİK1
KAHRAMANMARAŞ SÜTÇÜ İMAM ÜNİVERSİTESİ1
KARABÜK ÜNİVERSİTESİ3
DUMLUPINAR ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ2
TOROS UNİVERSİTESİ1
ÇUKUROVA ÜNİVERSİTESİ ENFORMATİK BÖLÜMÜ8
MUSTAFA KEMAL ÜNİVERSİTESİ2
BEYKENT ÜNİVERSİTESİ1
DOKUZ EYLÜL ÜNİVERSİTESİ1
MEB1
SDÜ MYO. BİLGİ GÜVENLİĞİ TEKNOLOJİLERİ1
18 MART ÜNİVERSİTE1
SÜLEYMAN DEMİREL ÜNİVERSİTESİ14
ATABEY MESLEK YÜKSEK OKULU4
MOBİLİZ BİLGİ VE İLETİŞİM HİZMETLERİ A.Ş1
OSMANGAZİ ÜNİVERSİTESİ1
3.ANA JET US K.LIĞI1
INTELRAD1
MUĞLA SITKI KOÇMAN ÜNİVERSİTESİ2
DOĞU AKDENİZ ÜNİVERSİTESİ1
KONYA NECMETTİN ERBAKA ÜNİVERSİTESİ3
DENIZ KUVVETLERİ K.LİGİ1
YEDİTEPE ÜNİVERSİTESİ1
KARADENİZ TEKNİK ÜNİVERSİTESİ5
BELİRTİLMEMİŞ41
Burada bazı verilerin tutarsız olması kişilerin kurum alanını yazarken herhangi bir standarda uymamasından kaynaklanıyor.

19 Aralık 2013 Perşembe

Python ile Twitter Apisi Kullanımı

Python ile twitter apisi kullanarak örnek uygulamalar oluşturmayı göreceğiz. Bunun için ilk önce twitterda uygulama oluşturmamız gerekiyor. https://dev.twitter.com/apps/new adresinden uygulama oluşturabilirsiniz. Uygulama oluşturduktan sonra karşınıza şu şekilde bir pencere gelecek.
Buradaki Consumer key,Consumer secret,Access token,Access token secret değerleri bize lazım olacak. Eğer sizde değerleri yoksa Your access token başlığı altındaki Create my access token butonuna tıklayarak oluşturunuz. Twitter apisini kullanabilmek için Twython modülünü kullanacağız. Eğer Twython bilgisayarınıza kurulu değilse terminalde şu komutları yazarak kurabilirsiniz.
pip install twython

easy_install twython
Twitter apisini kullanabilmek için ilk şu tanımlamaları yapmamız gerekiyor.
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from twython import Twython
CONSUMER_KEY = '***'
CONSUMER_SEcRET = '***'
ACCESS_TOKEN = "***"
ACCESS_TOKEN_SECRET = "***"



twitter = Twython(CONSUMER_KEY, CONSUMER_SECRET,
                  ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
twython modülü sayesinde Twitter'a bağlanmış olduk. Burdaki *** değerleri kendi değerleriniz olmalıdır. Şimdi isterseniz ilk önce
update_status()
fonksiyonunu kullanarak tweet atalım. Yukarıdaki kodlara şu satırı ekliyoruz.
twitter.update_status(status='#Python ile tweet atma..')
Tweet atmış olduk.
NOT: Eğer twitterda oluşturduğunuz uygulamanın yazma izni yoksa hata ile karşılaşırsınız. İlk uygulama oluşturulduğunda varsayılan olarak sadece okuma izni vardır.
Bir kullanıcının takipçi sayısı,takip ettiği kişi sayısı, attığı tweet sayısı gibi değerlere ulaşabiliriz.
##Takip ettiği kişi sayısı
user = twitter.get_user_timeline()
print user[0]['user']['friends_count']
138
##Takipçi sayısı
user = twitter.get_user_timeline()
print user[0]['user']['followers_count']
82
##Attığı tweet sayısı
user = twitter.get_user_timeline()
print user[0]['user']['statuses_count']
969
##Kullanıcı adı
user = twitter.get_user_timeline()
print user[0]['user']['screen_name']
_true_false
Bu işlemleri kullanıcı adını kendimiz vererek başka kullanıcı içinde yapabiliriz.
user = twitter.get_user_timeline(screen_name='uygarkoroglu')
print user[0]['user']['followers_count']
206
Şimdi istediğimiz bir kullanıcının son tweetlerini çekerek yeni bir .html sayfasına aktaracağımız basit bir uygulama yapalım.
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from twython import Twython
APP_KEY = '***'
APP_SECRET = '***'
ACCESS_TOKEN = "***"
ACCESS_TOKEN_SECRET = "***"



twitter = Twython(APP_KEY, APP_SECRET,
                  ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

user_tweets = twitter.get_user_timeline(screen_name='_true_false',include_rts=True)
tweets = ""
for tweet in user_tweets:
    tweet = Twython.html_for_tweet(tweet)
    tweets += '
  • '+tweet+'
  • ' html = """
      """+ tweets +"""
    """ create_html = open("tweets.html","w") create_html.write(html.encode('utf-8').strip()) create_html.close()
    Buradaki screen_name='_true_false' parametresi hangi kullanıcının tweetleri çekilecekse onun kullanıcını adını belirtir. Programı çalıştırdığınız da bulunduğunuz dizinde son tweetlerin bulunduğu tweets.html dosyası oluşacaktır.
    Daha fazla bilgiye https://twython.readthedocs.org/en/latest/ sayfasından ulaşabilirsiniz.
    Ekipten Mehmet İnce'nin benzer bir twitter modülünü kullanarak yazdığı tweet silme programına Buradan ulaşabilirsiniz.

    14 Aralık 2013 Cumartesi

    Koşul İfadeleri Alıştırmalarının Çözümleri



    Soru çözümleri kişiden kişiye değişebilir. Bir sorunun birden fazla çözümü olabilir. Bunun sebebi kullanıcının sorunun çözümü için izlediği algoritmaya bağlıdır. Doğru çalışan her kod bir çözümdür. Bu yüzden sizin yazmış olduğunuz kodlar aşağıdaki kodların aynısı olmak zorunda değildir.


    Soru 1) Bir dersten geçme notu 50 olarak belirlenmiş olsun. Kullanıcıya notunu sorup dersten geçme-kalma durumunu ekrana yazan programı yazınız.
    Çözüm:
    # !/usr/bin/env python
    # -*- coding: cp1254 -*-
    
    alinanNot = int(input("Notunuzu giriniz:"))
    # Kullanıcıdan notunu girmesini istiyoruz ve
    # Kullanıcı girişini int türüne dönüştürüyoruz
    # Dikkat! Değişkenimizin ismini not olarak tanımlayamayız.
    # Çünkü 'not' deyimi Python'da değil işlemi için kullanılan bir komuttur.
    
    # Girilen notun 0-100 aralığında olacağını da kontrol edelim.
    if alinanNot < 0 or alinanNot > 100:# Girilen not 0'dan küçük ve 100 den büyük ise
        print ("Geçersiz bir not değeri girdiz!")
    
    elif alinanNot < 50:    # Girilen not 50'dan küçük ise
        print ("KALDINIZ")
    else:     # Geriye kalan diğer durumlar için geçtiğini belirtmek için yani [50,100] aralığı
        print ("GEÇTİNİZ")
    

    Soru 2) Bir öğrencinin 2 tane sınav notunu kullanıcıdan alıp ortalamasını bulunuz. 100'lük sistemdeki bu notu 5'lik sistemdeki nota dönüştüren programı yazınız. (0-24->0; 25-44->1; 45-54->2; 55-69->3; 70-84->4; 85-100->5)
    Çözüm:
    # !/usr/bin/env python
    # -*- coding: cp1254 -*-
    
    alinanNot1 = int(input("1. Notunuzu giriniz:"))
    alinanNot2 = int(input("2. Notunuzu giriniz:"))
    
    # Geçersiz not girilmesi durumlarını kontrol edelim
    if alinanNot1 < 0 or alinanNot2 < 0 or alinanNot1 > 100 or alinanNot2 > 100:
        print ("Geçersiz bir not değeri girdiniz!")
    else:
    # Geçerli bir not girildiyse ortalama hesaplanacak ve
    # ortalamanın hangi not aralığında olduğu bulunacak
        ortalama = (int(alinanNot1) + int(alinanNot2)) / 2
        if ortalama <= 100:
            karneNotu = 5
        if ortalama < 85:
            karneNotu = 4
        if ortalama < 70:
            karneNotu = 3
        if ortalama < 55:
            karneNotu = 2
        if ortalama < 45:
            karneNotu = 1
    # Karne notunu bulmak için hep 'if' deyimini kullandık
    # 'elif' deyimi kullansaydık hata yapardık. Bu iki kullanımın
    # farkını ayırt edemiyorsanız, yazımızı tekrar okuyabilirsiniz.
    
    # Ortalamayı ve Karne Notunu ekrana yazalım
    print ("Ortalamanız:",ortalama)
    print ("Karne Notunuz:",karneNotu)
    

    Soru 3) Kullanıcının 1 ile 7 arasında bir sayı girmesini isteyiniz. Girilen sayının haftanın hangi günü olduğunu bulan programı yazınız. Hatalı girişlerde programın uyarı vermesini sağlayınız.
    Çözüm:
    # !/usr/bin/env python
    # -*- coding: cp1254 -*-
     
    sayi = int(input("1-7 arasında bir sayı giriniz(sınırlar dahil):"))
    
    # Sayı belirtilen aralıkta mı?
    if sayi >= 1 and sayi <= 7:
        # Girilen sayı belirtilen aralıkta ise bu koşullar çalışacak
        if sayi == 1:
            print ("Pazartesi")
        elif sayi == 2:
            print ("Salı")
        elif sayi == 3:
            print ("Çarşamba")
        elif sayi == 4:
            print ("Perşembe")
        elif sayi == 5:
            print ("Cuma")
        elif sayi == 6:
            print ("Cumartesi")
        elif sayi == 7:
            print ("Pazar")
    # Belirtilen aralığın dışında bir sayı girilmişse uyarı verelim
    else:
        print("Geçersiz bir değer girdiniz!")
    
    

    10 Aralık 2013 Salı

    random Modülü


    Python'daki modüllerden birisi de random modülüdür. Bu yazımızda da random modülünü inceleyeceğiz.

    Program yazarken zaman zaman rastgele sayılara ihtiyaç duyarız ve bunun için bilgisayara rastgele bir sayı ürettirmemiz gerekir. Bu rastgele olacak olan durum; bir listeden rastgele bir eleman seçme, belli bir aralıkta rastgele sayı tutma gibi farklı durumlar olabilir.

    Biz burada random modülü için en çok kullanılan metotlara değineceğiz; ancak siz daha fazlasını merak ediyorsanız. Etkileşimli kabukta
    >>>import random
    >>>help (random)
    komutlarını yazdığınız zaman, açıklamalarıyla birlikte metotları görebilirsiniz. Aşağıdaki en çok kullanılan metotları hem açıklayıp hem de etkileşimli kabuk üzerinden çalıştırarak görelim.

    Random

    Modülün bu metodunu kullandığımız zaman 0 ile 1 arasında rastgele bir sayı üretilir. Üretilen bu sayıda dikkat edilmesi gereken bir nokta vardır. Üretilen bu sayı 0 olabilirken 1 olamaz; yani [ 0, 1 ) aralığında oluşmaktadır. Etkileşimli kabuktan gösterecek olursak
    >>>import random
    >>>random.random()
    0.8759562487514273
    
    şeklinde oldu. Burada bize üretmiş olduğu rastgele sayı olduğu için siz denediğinizde başka bir sayı oluşması muhtemeldir.

    Randint

    Random ile ürettiğimiz sayı float tipinde bir sayı idi. Biz integer tipinde bir sayı istiyorsak bu durumda randint metodunu kullanabiliriz. Bu metot kullanılırken başlangıç ve bitiş aralık değerleri verilir; ancak bu durumda bitiş değeri de rastgele sayı olarak tutabilir. Yani [başlangıç, bitiş] aralığı kullanılır.
    >>>random.randint(1, 3)
    3
    

    Choice

    Eğer önceden belirlediğimiz bir listeden rastgele bir eleman seçmek istiyorsak, bu durumda kullanacağımız metot choice metodudur.
    >>>random.choice(['sonbahar', 'kış', 'ilkbahar', 'yaz'])
    'ilkbahar'
    

    Shuffle

    Shuffle fonksiyonu ile elimizdeki bir listeyi karıştırabiliriz. Böylelikle listedeki elemanların yerleri rastgele atanmış olur.
    >>>rakamlar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    >>>random.shuffle(rakamlar)
    >>>rakamlar
    [1, 7, 3, 8, 9, 4, 0, 5, 6, 2]

    Randrange

    Başlangıç, bitiş ve artış miktarını belirleyerek rastgele sayı üretmek istiyorsak bu durumda kullanabileceğimiz metot ise randrange metodudur. Random metodunda bahsetmiş olduğumuz [ başlangıç, bitiş ) aralığı burada da geçerlidir.
    Kullanımı biraz esnektir. Şu şekilde:
    randrange(başlangıç, bitiş, artış) : [ başlangıç, bitiş ) aralığında başlangıçtan itibaren artış miktarının katında herhangi bir değer alır.
    randrange(başlangıç, bitiş ) : [ başlangıç, bitiş ) aralığından bir tam sayı değeri alır.
    randrange(bitiş) : [ 0, bitiş ) aralığından rastgele bir tam sayı değeri alır.
    Şimdi bu üç kullanım için örnek verelim:
    # [1,10) aralığında tek bir sayı tutulur.
    >>>random.randrange(1, 10, 2)
    7
    
    # Sadece başlangıç ve bitiş aralığını verirsek artış miktarı 1 kabul edilir.
    >>>random.randrange(1, 10)
    4
    
    # Sadece bitiş değeri verilirse [0,bitiş) aralığında değer tutulur.
    >>>random.randrange(10)
    2
    

    Alıştırmalar

    1) 0 ile 100 arasında tutulan bir sayıya göre kullanıcıyı "Aşağı", "Yukarı" diye yönlendirecek şekilde bir Sayı Tahmin Oyunu yazınız.

    2) 2 adet zar atılsın ve her iki zarın değeri de 6 olduğunda program dursun. İki zar da 6 gelene kadar kaç kez zar atıldığını bildiren programı yazınız.

    Not: Örnek olması açısından buradaki iletiyi inceleyebilirsiniz.

    Kaynaklar
    http://docs.python.org/2/library/random.html
    http://en.wikibooks.org/wiki/Choose_Your_Own_Pyventure/Random_and_PRNGs
    http://www.cs.swarthmore.edu/~adanner/cs21/f09/randomlib.php
    Mustafa Başer - Python Kitabı

    9 Aralık 2013 Pazartesi

    Dosyalama İşlemleri

    Python kullanarak geliştireceğiniz uygulamalarda, uygulamanıza ait verileri saklamak isteyebilirsiniz. Eğer çok büyük çaplı verileri saklamayı düşünmüyorsanız dosyalama sizin için ideal bir yöntemdir. Bu yöntem bilinen en ilkel saklama yöntemi olmasına rağmen verilerinizi her zaman veritabanı gibi karmaşık yapılarda saklamaya ihtiyaç duymayabilirsiniz. Şimdi gelin Python ile temel dosyalama işlemleri nasıl yapılır inceleyelim:

    Dosyalama Modları:
    Dosyalar üzerinde işlem yapmaya başlamadan önce dosyalara erişimi denetleyen okuma/yazma modları hakkında bilgi sahibi olmanız gerekir. Bu modlar;
    • r : sadece okuma modu (salt okunur)
    • w : yazma modu
    • : dosya sonuna ekleme modu
    • b : ikili (binary) erişim modu
    • t : salt metin modu (ön tanımlı)
    • + : hem okuma hem de yazma modu
    Yukarıda bahsedilen modlar birçok programlama dili için aynı şeyi ifade etmektedir. Genel olarak farklılık görebileceğiniz nokta ise okuma, yazma ve ekleme dışındaki modlardır.Yani ekstra modlar dillere göre çeşitlilik gösterebilir.

    Dosyalama modlarını inceledikten sonra Python ile bir dosyaya nasıl erişebiliriz sorusunu irdeleyelim:

        D = open('ornek.txt')
    

    Bu komutu çalıştırıldığında içerisine parametre olarak belirtilen dosyayı salt-okunur olarak açıp D isimli nesneye atar. (Dosyanın salt-okunur modda açılma sebebi, yazdığımız open metodu içerisine hangi modda açılacağını belirtmememizdir.)


    Üst kısımda yer alan komutları incelediğinizde, D.readline() dikkatinizi satırı çekmiştir. readline() metodu o an açık olan dosyadan satır satır veri okumanızı sağlar. Bu komutu ikinci bir kez daha girerseniz dosyada yer alan bir sonraki satır ekrana getirilir.

    Diyelim ki dosyayı belirli bir yerine kadar okudunuz ver işinize yarayan bilgiyi elde ettiniz. Peki dosyanın en başına nasıl geri döneceksiniz?

    Eğer bu soruya yanıt olarak "dosyayı yeniden açarım" diyorsanız, evet bu da bir yoldur ama bu kadar esnek bir programlama dilinde bunu yapmanın daha kolay bir yolu vardır değil mi?

    Kesinlikle var, bu yol "seek" metodunun ta kendisi. Dosyanın başına dönmek için;

        D.seek(0)
    

    Bu komutu çalıştırdığınızda Python o an en son karakteri işaret eden dosya imlecini dosyanızın başına yani 0. karaktere götürür.

    Dosyadaki Bütün Satırlara Erişim:
    Yukarıdaki yöntem ile sırayla dosyadaki bütün satırlara nasıl erişebileceğimizi görmüş olduk. Şimdi ise küçük birkaç satır yardımıyla bir dosya başından sonuna nasıl okunur inceleyelim:

        
        dosya_metni = open('ornek.txt').read()
        print(dosya_metni)
    


    Gördüğünüz gibi "ornek.txt" dosyası içerisindeki bütün veriyi read() metodu yardımıyla okuyup ekrana bastırdık. Şimdi ise bir dosyadaki satırları listeye aktarmayı inceleyelim:

        liste = D.readlines()
    

    Şimdiye kadar gördüğümüz kısım bir dosyadan veri okuma ile ilgiliydi. Şimdi ise "bir dosyaya nasıl veri yazılır?" sorusunu irdeleyelim. Dosyaya veri yazmak için w veya a ve + modlarının kullanabileceğimiz üç mod olduğuna yazının başında değinmiştik. Şimdi bu modlardan faydalanarak dosyaya veri yazma işlemini gerçekleyelim:

        Y = open('ornek.txt','a')
        Y.write('EKLENEN TEST VERISI')
    

    Gördüğünüz gibi open metodunu yazarken ikinci bir parametre olan "a" sayesinde dosyayı sonuna ekleme modunda açarak içeriğini güncelledik.

    Peki içerisinde veri olan bir dosyayı "a" - append yerine "w" - write modunda açsaydık ne olurdu? Varolan dosya içeriği silinir, son olarak göndermiş olduğunuz veri içeriği boşaltılmış dosyaya yazılırdı. "w" - write modu aslında dosyayı yeniden oluşturma modu olarak da düşünülebilir. Zaten open() metodunda belirttiğiniz gibi bir dosya o an içinde bulunulan dizinde yoksa "w" modu ile açılması halinde otomatik olarak oluşturulur.

    Üzerinde çalışmakta olduğunuz dosya ile işiniz bittikten sonra;

        Y.close()
    

    komutu ile bu dosyayı kapatmanız faydalı olacaktır.
    Temel olarak Python'da dosyalama işlemleri konusunu incelemiş olduk. Siz de yapacağınız uygulamalarla örnekleri çoğaltabilir, bu işlemleri ihtiyacınıza göre şekillendirebilirsiniz.

    Unutmayın, Python yeterince esnek bir dildir.
    İyi çalışmalar...

    Windows Python'ı Yol'a Eklemek

    GNU/Linux işletim sistemi kullananlar Python'ın etkileşimli kabuğuna ulaşmak için komut satırında python yazmaları yeterlidir. Bunun sebebi Linux python'u sisteme kurarken çalıştırılabilir python dosyasını /usr/bin klasörü içerisine atar. Komut satırına python yazdığımız zaman komut satırı ilk /usr/bin klasörü içerisinde arayacağı için herhangi bir sorun ile karşılaşmadan komutu çalıştıracaktır.
    Windows işletim sistemi kullananlar için cmd üzerinde python çalıştırmak biraz daha zahmetli olmaktadır. Eğer Linux'daki gibi python yazıp entera bastığınız zaman şu şekilde bir hata ile karşılaşırsınız.
    'python' is not recognized as an internal or external command,operable program or batch file.
    
    'python' iç ya da dış komut, çalıştırılabilir program ya da toplu iş dosyası olarak tanınmıyor.
    
    Windows kullanıcıları şu şekilde doğrudan Python'ı nereye kurdularsa o dizin üzerinden çalıştırmak zorundadırlar.
    c:\Python27\python.exe
    
    Bu şekilde yazıldığı zaman çalışacaktır. Fakat her seferinde bu şekilde yazmak zahmetli olacağı için Linux'daki gibi doğrudan python yazarak nasıl çalıştırabileceğimizi gösterelim. Bilgisayarıma sağ tıkladıktan sonra aşağıdaki yolu takip ederek Ortam Değişkenlerine ulaşmamız gerekir.
    Özellikler -> Gelişmiş Sistem Ayarları
    
    Bu gelen pencerede Ortam Seçenekleri butonuna tıklıyoruz.
    Gelen pencere de yapmamız gereken Sistem değişkenleri içerisinde PATH seçeneğini seçmek ve Düzenle butonuna tıklamak.
    Düzenle dedikten sonra değişken değeri kısmının sonuna ; koyduktan sonra Python'ı nereye kurduysak o dizinin yolunu ekleiyoruz. Bu işlemi yaptıktan sonra artık cmd içerisinde python yazmamız yeterli olacaktır.
    Not: Bu işlem windows 8 işletim sistemi üzerinde yapılmıştır. Diğer Windows işletim sistemlerinde yapmanız gereken işlemler aynıdır.