Dosya Okuma ve Yazma İşlemlerinde İleri Seviye Fonksiyonlar

Dosya Okuma ve Yazma İşlemlerinde İleri Seviye Fonksiyonlar

Python'da dosya okuma ve yazma işlemleri için kullanabileceğimiz ileri seviye fonksiyonlar arasında dosya türleri ve boyutları belirleme, dosya oluşturma, silme ve dizin işlemleri gibi konular yer almaktadır Bu fonksiyonlar sayesinde işlemler daha verimli ve hızlı bir şekilde gerçekleştirilebilir Bytes ve text dosya türleri arasındaki farkları bilmek de dosya işlemleri için önemlidir Ayrıca, dosya boyutu ve dizin işlemlerine ilişkin konular da dosya okuma ve yazma işlemleri için oldukça önemlidir Dosya boyutunu belirlemek ve dizin içindeki dosyalara erişmek, klasör oluşturmak ve silmek için os modülü altındaki fonksiyonları kullanabiliriz Dosya işlemleri yaparken işlemlerin doğru ve hatasız bir şekilde gerçekleştirilmesi için dosya türüne ve boyutuna dikkat etmek gerekmektedir

Dosya Okuma ve Yazma İşlemlerinde İleri Seviye Fonksiyonlar

Python, dosya işlemleri konusunda oldukça güçlüdür. Bu makalede, Python'da dosya okuma ve yazma işlemleri için gerekli olan ileri seviye fonksiyonlara değineceğiz. Python'da dosya okuma ve yazma işlemleri yaparken, dosya türlerini ve boyutlarını belirleyebilir, dosya oluşturma, silme ve dizin işlemlerini gerçekleştirebilirsiniz. Dosya işlemlerinde ileri seviye fonksiyonlar sayesinde, işlemler daha verimli ve hızlı bir şekilde gerçekleştirilebilir.

Bytes ve text dosya türleri arasındaki farkları kavramak da dosya işlemleri için önemlidir. Ayrıca CSV dosyalarından veri okuma ve yazma gibi işlemler de yapabilirsiniz. Bu makalede, dosya işlemlerinde kullanabileceğiniz birçok ileri seviye fonksiyonu öğrenebileceksiniz.


Bytes ve Text Dosya Türleri Arasındaki Farklar

Programlama dillerinde dosya okuma ve yazma işlemleri, iki temel dosya türü olan bytes ve text dosyaları arasındaki farka dikkat etmek gerektirir. Bytes dosyaları, ASCII karakterlerine ve düşük seviyeli byte değerlerine sahiptir. Bu tür dosyalar, resim, video ve diğer verilerin depolanması için kullanılır. Text dosyaları ise, metin içeren dosyalardır ve kullanıcıların okuyup anlayabileceği karakterlerden oluşur.

Python ile bytes dosyaları okuyup yazmak için 'rb' modunu kullanmalıyız. Örneğin, 'with open("resim.jpg", "rb")' şeklinde bir kod ile resim dosyasını açabiliriz. Text dosyaları ise 'r' modu ile açılır. Varsayılan olarak, Python text dosyalarını UTF-8 kodlama ile açar, ancak farklı bir kodlama kullanmak istiyorsak 'encoding' parametresini kullanabiliriz.

Bytes ve text dosya türleri arasındaki farka dikkat etmek, dosya okuma ve yazma işlemlerini doğru ve hatasız bir şekilde gerçekleştirmek için son derece önemlidir. Bu nedenle, dosyaların türüne dikkat ederek programlama işlemlerimizi yapmalıyız.


Dosya Boyutu ve Dizin İşlemleri

Dosya boyutuna ve dizin işlemlerine ilişkin konular, Python'da dosya okuma ve yazma işlemleri için oldukça önemlidir. Dosya boyutu belirleme, bir dosyanın boyutunu öğrenme, dizin içindeki dosyalara erişme, klasör oluşturma ve silme işlemleri, sıklıkla yapılan işlemler arasındadır.

Dosya boyutunu belirlemek için os modülü altındaki getsize() fonksiyonunu kullanabiliriz. Bu fonksiyon, verilen dosya yolunun boyutunu döndürür. Ayrıca, dosyanın diğer özelliklerini (oluşturulma tarihi, değiştirilme tarihi vb.) öğrenmek için os modülü altındaki stat() fonksiyonunu da kullanabiliriz.

Fonksiyon Açıklama
os.path.getsize() Bir dosyanın boyutunu öğrenir.
os.stat() Bir dosyanın boyutunu ve diğer özelliklerini öğrenir.

Dizin işlemleri ile ilgili olarak, os modülü altındaki listdir(), mkdir() ve rmdir() fonksiyonlarını kullanarak, belirtilen dizindeki dosyalara erişebilir, yeni klasör oluşturabilir ve klasörleri silebiliriz.

Fonksiyon Açıklama
os.listdir() Bir dizindeki dosya ve klasörleri listeler.
os.mkdir() Yeni bir klasör oluşturur.
os.rmdir() Bir klasörü (boş olduğu takdirde) siler.

Bu dosya boyutu ve dizin işlemleri, Python'da dosya okuma ve yazma işlemleriyle çalışırken oldukça yararlıdır. Bu işlemleri basit bir şekilde gerçekleştirebilmek, Python programlama dilinde dosyalarla daha fazla işlem yapmamızı sağlayacaktır.


Dosya Boyutu Belirleme

Dosyaların boyutunu belirlemek, dosyaların yönetiminde oldukça önemlidir. Python'da bir dosyanın boyutunu belirlemek için iki yöntem vardır. Bunlar os.path.getsize() ve os.stat() fonksiyonlarıdır.

os.path.getsize() fonksiyonu, verilen dosyanın boyutunu byte cinsinden döndürür. Bu fonksiyonu kullanarak örnek bir örnek verecek olursak:

Kod Parçası Açıklama
import os os kütüphanesini içeri aktarıyoruz.
file_size = os.path.getsize("dosya.txt") "dosya.txt" dosyasının boyutunu bir değişkene atıyoruz.
print("Dosya boyutu:", file_size, "byte") Dosya boyutunu ekrana yazdırıyoruz.

Bu kod parçası, "dosya.txt" dosyasının boyutunu byte cinsinden öğrenir ve ekrana yazdırır.

os.stat() fonksiyonu, dosya hakkında daha fazla bilgi verir. Bu fonksiyon, dosya boyutu gibi birçok özelliği içeren bir stat_result objesi döndürür. Bu objenin özelliklerine erişerek dosya hakkında bilgi edinebiliriz.

Kod Parçası Açıklama
import os os kütüphanesini içeri aktarıyoruz.
file_stat = os.stat("dosya.txt") "dosya.txt" dosyası hakkında bilgi içeren bir obje oluşturuyoruz ve bir değişkene atıyoruz.
file_size = file_stat.st_size objenin st_size özelliğinde dosya boyutu byte cinsinden yer almaktadır ve bu değer bir değişkene atanır.
print("Dosya boyutu:", file_size, "byte") Dosya boyutunu ekrana yazdırıyoruz.

Bu kod parçası da "dosya.txt" dosyasının boyutunu byte cinsinden öğrenir ve ekrana yazdırır. Ancak os.stat() fonksiyonu, dosyanın oluşturulma tarihi, değiştirilme tarihi gibi diğer özelliklerini de verir.


os.path.getsize()

os.path.getsize() fonksiyonu Python'da bir dosyanın boyutunu öğrenmek için kullanılır. Bu fonksiyon, dosya yolu belirtilerek çağrılır ve dosya boyutu byte cinsinden döndürülür. Aşağıdaki örnek kodda, "example.txt" dosyasının boyutunu öğreniyoruz:

import ossize = os.path.getsize('example.txt')print("Dosya boyutu:", size, "byte")

Bu örnekte, os modülü import edilerek os.path.getsize() fonksiyonu çağrılıyor ve "example.txt" dosyasının boyutu öğreniliyor. Boyut "byte" cinsinden olduğundan, çıktıda "byte" olarak belirtiliyor.

Böylece, dosya boyutu öğrenmek os.path.getsize() fonksiyonu ile oldukça kolay hale geliyor.


os.stat()

Bir dosyanın boyutu yanı sıra diğer özellikleri de öğrenmek isteyebilirsiniz. Bu durumda, os.stat() fonksiyonunu kullanabilirsiniz. Bu fonksiyon, belirtilen dosyanın tüm özelliklerinin bulunduğu bir tuple nesnesi döndürür. Bu tuple'da, dosyanın son erişim ve değiştirilme tarihi, dosyanın izinleri, kimliği ve daha fazlası gibi bilgiler bulunur.

Aşağıdaki örnek kod, os.stat() fonksiyonunun kullanımını göstermektedir:

import osfile_stat = os.stat('dosya.txt')print('Dosya boyutu: ', file_stat.st_size)print('Dosyanın son erişim tarihi: ', file_stat.st_atime)print('Dosyanın son değiştirilme tarihi: ', file_stat.st_mtime)

Bu kodda, önce os.stat() fonksiyonu kullanılarak 'dosya.txt' dosyasının tüm özellikleri alınır. Daha sonra, dosyanın boyutu, son erişim tarihi ve son değiştirilme tarihi gibi özelliklerini yazdırmak için bu özelliklere erişilir.

Benzer şekilde, dosyanın kimliği, izinleri ve diğer özellikleri gibi diğer bilgileri de os.stat() fonksiyonu kullanarak alabilirsiniz.


Dizin İşlemleri

Dosyalarla ilgili işlemler gerçekleştirirken, bazen bir dizindeki dosyalara erişmemiz gerekebilir. Bu nedenle, bir dizindeki dosyalara erişme, oluşturma ve silme gibi işlemleri gerçekleştirmenin yollarını öğrenmek oldukça önemlidir.

  • os.listdir(): Bu yöntemi kullanarak, bir dizindeki tüm dosyaların ve alt klasörlerin listesini alabilirsiniz. Bu yöntemi kullanarak, dizindeki dosyaların ve klasörlerin adlarını da görebilirsiniz.
  • os.mkdir(): Bu yöntemle yeni bir dizin (klasör) oluşturabilirsiniz.
  • os.rmdir(): Bu yöntemle bir dizini (klasörü) silmek mümkündür. Ancak, bu yöntemi kullanmadan önce, klasörün boş olduğundan emin olun. Eğer içinde dosyalar veya alt klasörler varsa, önce onları silmeniz gerekir.

Ayrıca, dosyaların ve dizinlerin var mı yok mu kontrol etmek için de os.path.exists() yöntemini kullanabilirsiniz. Bu yöntem, bir dosyanın veya klasörün var olup olmadığını kontrol etmenizi sağlar.

Bir dizinde bulunan tüm dosyaları veya sadece belirli türdeki dosyaları listelemek isterseniz, list comprehension kullanarak belirli kriterlere göre filtreleyebilirsiniz. Örneğin, sadece .txt dosyalarını listelemek için şu kodu kullanabilirsiniz:

Kod:
[f for f in os.listdir() if f.endswith('.txt')]

Bu kod, mevcut çalışma dizinindeki tüm dosyalardan sadece .txt uzantılı olanları filtreler ve listeler.


os.listdir()

Dosya işlemlerinin en temel işlemlerinden biri, bir dizindeki dosya ve klasörleri listelemektir. Python'da, bu işlemi yapmak oldukça kolaydır ve bunun için os.listdir() fonksiyonunu kullanabiliriz. Bu fonksiyon, parametre olarak verilen dizindeki tüm dosya ve klasörleri bir listeye dahil eder.

Öncelikle, bu fonksiyonu kullanarak bir dizindeki dosyaları listelemeyi öğrenelim. Bunun için aşağıdaki kodu kullanabiliriz:

import osdizin = "/home/kullanici/dosyalar/"# Dizindeki tüm dosya ve klasörleri listeleicerik = os.listdir(dizin)# Listeleme işlemi sonucu elde edilen tüm öğeleri yazdırfor dosya in icerik:    print(dosya)    

Bu kod parçası, dizin değişkeninde belirtilen dizindeki tüm dosya ve klasörleri os.listdir() fonksiyonu ile icerik listesine dahil eder. Sonrasında tüm öğeleri for döngüsü yardımıyla yazdırır.

Bir dizindeki dosyaları listelemenin yanı sıra, sadece belirli bir dosya türündeki dosyaları listeleyebiliriz. Örneğin, sadece ".txt" uzantılı dosyaları listelemek için şu kodu kullanabiliriz:

import osdizin = "/home/kullanici/dosyalar/"# Sadece .txt dosyalarını listeleicerik = [dosya for dosya in os.listdir(dizin) if dosya.endswith('.txt')]# Listeleme işlemi sonucu elde edilen tüm öğeleri yazdırfor dosya in icerik:    print(dosya)    

Bu kod parçası, yalnızca ".txt" uzantılı dosyaları icerik listesine dahil eder ve sonrasında bu dosyaları yazdırır.

Kısacası, os.listdir() fonksiyonu, bir dizindeki tüm dosya ve klasörleri listelemek için oldukça kullanışlıdır ve bu işlemi gerçekleştirmek için öğrenmeniz gereken en önemli fonksiyonlardan biridir.


os.mkdir()

Python'da dosya okuma ve yazma işlemleri sırasında kullanabileceğimiz ileri seviye fonksiyonlar arasında "os.mkdir()" fonksiyonu da yer almaktadır. Bu fonksiyon sayesinde, mevcut dizinde yeni bir klasör oluşturabiliriz. Peki, bu fonksiyonu nasıl kullanabiliriz?

"os.mkdir()" fonksiyonunu kullanmak için öncelikle "os" modülünü import etmemiz gerekiyor. Daha sonra ise fonksiyonu şu şekilde kullanabiliriz:

```pythonimport os

# Yeni bir klasör oluşturmaos.mkdir("yeni_klasor")```

Yukarıdaki kodlar sayesinde, mevcut dizinde "yeni_klasor" adında bir klasör oluşturmuş oluruz. Bu fonksiyonun çalışması için, oluşturacağınız klasörün ismi haricinde bir parametreye ihtiyacımız bulunmamaktadır.

Çoğu zaman Python programları, kullanıcıların belirli bir klasörde çalıştırmak adına istedikleri klasörü oluşturmak için "os.mkdir()" fonksiyonunu kullanırlar. Örneğin, bir veritabanı sistemi aracılığıyla yeni bir kullanıcı hesabı eklemek istediğimizde, bu hesap için bir klasör oluşturmak mantıklı bir seçim olabilir. Klasör oluşturma işlemi, programlarımızın daha modüler ve kullanışlı olması yönünde önemli bir adım olabilir.


os.rmdir()

Python'da dosya işlemleri yaparken, bazen bir klasörü silmemiz gerekebilir. Bu işlemi gerçekleştirmek için "os.rmdir()" işlevini kullanabiliriz. Bu işlev, belirtilen klasörü siler, ancak klasörün boş olduğundan emin olmalıyız. Aksi takdirde, bir hata mesajı alırız.

Örneğin, "my_folder" adlı bir klasörümüz olduğunu farz edelim. Bu klasörü silmek için şu kodu kullanabiliriz:

import osos.rmdir("my_folder")

Eğer klasörün içinde dosya veya başka klasörler varsa, "OSError: [Errno 39] Directory not empty: 'my_folder'" gibi bir hata mesajı alırız. Bu durumda, klasörü silmek için önce içindeki tüm dosyaları ve klasörleri silmeliyiz.

Bu işlemi yapmak için, "os.listdir()" işlevini kullanarak klasör içindeki tüm dosya ve klasörleri listeleriz ve daha sonra "os.remove()" veya "os.rmdir()" işlevlerini kullanarak her birini tek tek sileriz. Ancak bu yöntem, klasörün içindeki alt klasörlerin de silinmesini gerektirir. Eğer alt klasörlerin silinmesini istemiyorsak, "shutil.rmtree()" işlevini kullanabiliriz. Bu işlev, belirtilen klasörü ve tüm içeriğini siler.

Örneğin, "my_folder" adlı bir klasörün içinde "my_file.txt" adlı bir dosya olduğunu farz edelim. Bu klasörü ve içindeki dosyayı silmek için şu kodu kullanabiliriz:

import shutilshutil.rmtree("my_folder")

Bu işlevi kullanarak klasörü ve tüm içeriğini silmek oldukça kolay ve hızlı bir yöntemdir. Ancak dikkatli olmalıyız ve kesinlikle silmeyeceğimiz dosyaları veya klasörleri seçtiğimizden emin olmalıyız.


CSV Dosyaları İle Çalışma

CSV (Comma Separated Values) dosyaları, verilerin virgül, noktalı virgül ya da tab gibi ayırıcılarla birbirinden ayrıldığı dosya türleridir. Bu dosyalarla çalışmak, özellikle büyük boyutlu verilerle çalışanlar için oldukça faydalıdır. Python'da bu dosyalardan veri okuma ve yazma işlemlerini gerçekleştirebilmek için, csv kütüphanesini kullanabiliriz.

csv.reader() fonksiyonunu kullanarak, CSV dosyasındaki verileri okuyabiliriz. Bu fonksiyona, dosya adı ve okuma modu gibi parametreler vermemiz gerekmektedir. Örneğin:

import csvwith open('ornek.csv', 'r') as csv_dosyasi:    okuyucu = csv.reader(csv_dosyasi)    for satir in okuyucu:        print(satir)

Bu şekilde, CSV dosyasındaki tüm verileri satır satır okuyabiliriz.

csv.writer() fonksiyonu ise, CSV dosyasına veri yazmamıza olanak sağlar. Bu fonksiyona, dosya adı ve yazma modu gibi parametreler vermemiz gerekmektedir. Örneğin:

import csvwith open('ornek.csv', 'a', newline='') as csv_dosyasi:    yazici = csv.writer(csv_dosyasi)    yazici.writerow(['Mars', 'Venüs', 'Jüpiter'])

Bu şekilde, CSV dosyasına 'Mars', 'Venüs' ve 'Jüpiter' değerleri yeni bir satır olarak yazdırılacaktır.

Bu işlemleri gerçekleştirirken, CSV dosyasının karakter seti de oldukça önemlidir. Çünkü bu dosyalardaki veriler, farklı karakter setleri kullanılarak oluşturulmuş olabilir. Bu nedenle, csv kütüphanesini kullanmadan önce, dosyanın karakter setini kontrol etmeniz gerekmektedir.


csv.reader()

Python'da csv modülü kullanarak csv dosyalarından veri okuma işlemi oldukça kolaydır. Bu işlem için csv.reader() fonksiyonunu kullanabiliriz. csv.reader() fonksiyonu, her bir satırı okuyarak bu satırların virgülle ayrılmış sütunlarını bir listeye dönüştürür.

csv.reader() fonksiyonu kullanarak csv dosyasından veri okurken aynı zamanda dil, karakter seti, satır sonu işareti ve sütun ayracı ayarlarını da yapabiliriz. Sütun ayracı olarak varsayılan olarak virgül kullanılır ancak alternatif olarak diğer karakterleri de kullanabilirsiniz.

Parametre Adı Açıklama
csvfile Okunacak csv dosyası
dialect Karakter seti ve sütun ayracı gibi dosya özelliklerini ayarlamak için kullanılır
delimiter Sütun ayracı karakteri
quotechar Alıntı işareti karakteri

Örnek olarak, aşağıdaki kod satırlarını kullanarak bir csv dosyasını okuyabiliriz:

import csvwith open('dosya.csv', newline='') as csvfile:    veriler = csv.reader(csvfile, delimiter=';', quotechar='"')    for satir in veriler:        print(', '.join(satir))

Bu kod, "dosya.csv" adlı csv dosyasını okur ve her bir satırı ',' karakteriyle birleştirip ekrana yazdırır.


csv.writer()

CSV dosyalarına veri yazmak için python tarafından sunulan csv.writer() fonksiyonunu kullanabiliriz. Bu fonksiyonla, önceden belirlediğimiz bir CSV dosyasına veri yazabileceğiz. Göreceğimiz örnek kodlarla inceleyelim:

Öncelikle, csv.writer() fonksiyonunu kullanarak bir CSV dosyası oluşturuyoruz:

Kod Açıklama
import csvwith open('ornek.csv', 'w', newline='') as csv_file:    yazici = csv.writer(csv_file)    yazici.writerow(['isim', 'soyisim', 'sehir'])
Dosyaya başlık yazmak için writerow() fonksiyonunu kullanıyoruz.

Daha sonra oluşturduğumuz CSV dosyasına satır yazmak için yazdığımız kod:

Kod Açıklama
import csvwith open('ornek.csv', mode='a', newline='') as csv_file:    yazici = csv.writer(csv_file)    yazici.writerow(['Ali', 'Yılmaz', 'Ankara'])
CSV dosyasına satır eklemek için writerow() fonksiyonunu kullanıyoruz.

Bu şekilde, csv.writer() fonksiyonu ile önceden oluşturduğumuz bir CSV dosyasına veri yazabiliriz.