Python’da dosyaya veri eklemek için 2 farklı mod olduğundan dosyayı açmak konusunda bahsetmiştik. Dosyayı açarken kullandığınız parametreler daha sonra içerik eklerken nasıl bir işlem gerçekleştirileceğini belirliyor. open() fonksiyonuna eklediğiniz;

“a” parametresi, dosyanın sonuna içerik eklemenizi sağlarken

“w” parametresi, dosyanın üzerine yazmanız için kullanınlıyor.

Burada mevcut verilerinizi kaybetmemeniz için hangi parametre ile çalıştığınıza dikkat etmelisiniz.

Genellikle; yeni bir dosya oluşturup içine veri eklerken “w” parametresi, mevcut bir dosyaya veri ekleyerek güncellemek için de “a” parametresi kullanılır.

Dosyaya veri yazmak için de write() fonksiyonu kullanılır.

Örnek olarak daha önce kullandığımız metin dosyasını açalım ve sonuna yeni bir içierik ekleyelim;

# Dosyayı güncelleme formatında açalım
dosya=open("dosyam.txt", "a")
# Dosyanın sonuna yeni veri ekleyelim
dosya.write("""

Kitap Adı: 0 (IT)
Yazar: Stephen King
Kitap Türü: Korku
Sayfa Sayısı: 1216
İlk Baskı Tarihi: 2000

""")
dosya.close()
# Yeni veri eklediğimiz dosyanın son halini görelim. Okuyabilmek için tekrar açmanız gerektiğini unutmayın :)
dosya=open("dosyam.txt")
print(dosya.read())

Çıktı:

Amerikalı roman ve hikaye yazarı Stephen King’in 1986’da yayımlanan ölümsüz eseri "O",
dünya edebiyatında korku ve gerilim türünün en seçkin örnekleri arasında yer alıyor. 
Eser, kalın hacminin yanı sıra akıcı dili ve sürükleyici hikayesiyle okurlarını dolu
dizgin bir maceraya sürüklüyor. Yazarın tamamlamak için üzerinde dört yıl boyunca çalıştığı
eseri, elinize aldığınızda bir solukta okuyacaksınız.

Stephen King’in başyapıtı olarak değerlendirilen "O" romanı, bini aşkın sayfasıyla okurlarına
çok boyutlu bir serüvenin kapılarını aralıyor. Yazarın yedi farklı karakterin anlatımıyla
kaleme aldığı eser, iki ayrı zaman dilimini kapsıyor. Böylelikle kitap, farklı kişi ve 
zamanların ele alındığı 14 bölümden meydana geliyor. Rafların tek ciltlik en kalın romanlarından
olan "O"yu bitirdiğinizde, daha uzun yazılmış olmasını dileyeceksiniz.

Kitap Adı: 0 (IT)
Yazar: Stephen King
Kitap Türü: Korku
Sayfa Sayısı: 1216
İlk Baskı Tarihi: 2000

Şimdi de dosyayı “w” parametresiyle açtıktan sonra aynı şekilde içine veri eklemek istediğinizde ne olacağını görelim. Bunu yaparken öncekiyle aynı içerikte yeni bir dosya oluşturalım. Adı dosyam2.txt olsun. Önce içeriğine göz atalım. Sonra “w” parametresiyle açalım ve yularıda örnekte yer alan aynı kod ile veri ekleyelim. Son olarak da, dosyanın son haline göz atalım.

# Dosyanın mevcut halini görelim
print("---------------------------------------")
print("Dosyanın ilk hali: ")
print("---------------------------------------")
dosya=open("dosyam2.txt")
print(dosya.read())
# Dosyayı üzerine yazma formatında açalım
dosya=open("dosyam2.txt", "w")
# Dosyanın sonuna yeni veri ekleyelim
dosya.write("""

Kitap Adı: 0 (IT)
Yazar: Stephen King
Kitap Türü: Korku
Sayfa Sayısı: 1216
İlk Baskı Tarihi: 2000

""")
dosya.close()
# Yeni veri eklediğimiz dosyanın son halini görelim. Okuyabilmek için tekrar açmanız gerektiğini unutmayın :)
dosya=open("dosyam2.txt")
print("---------------------------------------")
print("Dosyaya veri eklendikten sonraki hali: ")
print("---------------------------------------")
print(dosya.read())

Çıktı:

---------------------------------------
Dosyanın ilk hali: 
---------------------------------------
Amerikalı roman ve hikaye yazarı Stephen King’in 1986’da yayımlanan ölümsüz eseri "O",
dünya edebiyatında korku ve gerilim türünün en seçkin örnekleri arasında yer alıyor. 
Eser, kalın hacminin yanı sıra akıcı dili ve sürükleyici hikayesiyle okurlarını dolu 
dizgin bir maceraya sürüklüyor. Yazarın tamamlamak için üzerinde dört yıl boyunca çalıştığı
 eseri, elinize aldığınızda bir solukta okuyacaksınız.

Stephen King’in başyapıtı olarak değerlendirilen "O" romanı, bini aşkın sayfasıyla okurlarına
çok boyutlu bir serüvenin kapılarını aralıyor. Yazarın yedi farklı karakterin anlatımıyla
kaleme aldığı eser, iki ayrı zaman dilimini kapsıyor. Böylelikle kitap, farklı kişi ve
zamanların ele alındığı 14 bölümden meydana geliyor. Rafların tek ciltlik en kalın romanlarından
olan "O"yu bitirdiğinizde, daha uzun yazılmış olmasını dileyeceksiniz.
---------------------------------------
Dosyaya veri eklendikten sonraki hali: 
---------------------------------------

Kitap Adı: 0 (IT)
Yazar: Stephen King
Kitap Türü: Korku
Sayfa Sayısı: 1216
İlk Baskı Tarihi: 2000

Genel bir özet olarak bir dosyayı okumak, sıfırdan oluşturmak, dosyaya yazmak ya da veri eklemek ile ilgili parametreleri aşağıdaki tabloda görebilirsiniz. Sık kullanılanlar kalın punyo ile yazılmıştır. Bu modları anlamak, Python’da çeşitli veri işleme görevleri için dosyalarla çalışırken önemlidir.

ModKullanımı
‘r’Okuma modu. Mevcut bir dosyayı okumak için açar. Dosya mevcut değilse hata verir.
‘w’Yazma modu. Yazmak için yeni bir dosya oluşturur. Zaten mevcutsa dosyanın üzerine yazar.
‘a’Ekleme modu. Veri eklemek için bir dosya açar. Dosya mevcut değilse oluşturur.
‘x’Özel oluşturma modu. Yazmak için yeni bir dosya oluşturur ancak dosya zaten mevcutsa hata verir.
‘rb’Binry dosya okuma modu. Mevcut bir binary dosyayı okumak için açar.
‘wb’Binry dosya yazma modu. Yazmak için yeni bir binary dosya oluşturur.
‘ab’Binry dosya ekleme modu. Veri eklemek için bir binary dosya açar.
‘xb’Özel binary dosya oluşturma modu. Yazmak için yeni bir ikili dosya oluşturur, ancak zaten mevcutsa hata verir.
‘rt’Metin okuma modu. Mevcut bir metin dosyasını okumak için açar. (Metin dosyaları için varsayılan)
‘wt’Metin yazma modu. Yazmak için yeni bir metin dosyası oluşturur. (Metin dosyaları için varsayılan)
‘at’Metin ekleme modu. Veri eklemek için bir metin dosyası açar. (Metin dosyaları için varsayılan)
‘xt’Özel metin oluşturma modu. Yazmak için yeni bir metin dosyası oluşturur, ancak zaten mevcutsa hata verir.
‘r+’Okuma ve yazma modu. Mevcut bir dosyayı hem okuma hem de yazma için açar.
‘w+’Yazma ve okuma modu. Okuma ve yazma için yeni bir dosya oluşturur. Zaten mevcutsa dosyanın üzerine yazar.
‘a+’Ekleme ve okuma modu. Hem ekleme hem de okuma için bir dosya açar. Dosya mevcut değilse oluşturur.
‘x+’Özel oluşturma ve okuma/yazma modu. Okuma ve yazma için yeni bir dosya oluşturur, ancak zaten mevcutsa hata verir.

Python’da Metin Biçimlendirme

Python’da bir dosya oluşturup veri yazarken temel metin biçimlendirme işlemlerini gerçekleştirebilir ya da tablo şeklinde düzenleme yapabilirsiniz. En sık kullanılan metin ve sayı biçimlendirme özellikleri şunlardır;

Karakter

Açıklama

\n

Satır sonu yapar. Ardından gelenleri yeni satır başından yazdırır.

:<

Sola hizalar.

:>

Sağa hizalar.

:^

Ortalar.

:n

Sayıları yerel ayarlara göre biçimlendirir.

:d

Tamsayıyı ondalık (decimal) olarak biçimlendirir.

:f

Ondalıklı sayıyı biçimlendirir (float).

:e

Ondalıklı sayıyı üstel gösterimde (scientific notation) yazar (ör. 1.23e+03).

:b

Sayıyı ikili (binary) sistemde gösterir.

:o

Sayıyı sekizli (octal) sistemde gösterir.

:x veya :X

Sayıyı on altılı (hexadecimal) sistemde küçük (x) veya büyük (X) harflerle gösterir.

%

Sayıyı yüzde olarak biçimlendirir.

str.format(): Bu yöntem, yer tutucular ({}) ile veriyi yerleştirmenizi sağlar.

sablon = "Üye Numarası: {} Tarih: {} Durum: {}" 
print(sablon.format(12345, "2022-10-12", "yes"))

Kodun çıktısı:

Üye Numarası: 12345 Tarih: 2022-10-12 Durum: yes

f-strings: Python 3.6 ve üzeri sürümlerde kullanılabilen bu yöntem, hızlı ve okunabilir biçimlendirme sağlar.

uye_no = 54321
uyelik_tarihi = "12.10.2022"
durum = "aktif"
print(f"Üye No: {uye_no} Üyelik Tarihi: {uyelik_tarihi} Durum: {durum}\n")

Kodun çıktısı:

Üye No: 54321 Üyelik Tarihi: 12.10.2022 Durum: aktif

Şimdi bu öğrendiklerimizi örneklerle görelim;

Ondalıklı sayıları belirli bir hassasiyetle yazdırabilirsiniz.

veri = 123.456789
print(f"{veri:.2f}") # 2 basamak
print(f"{veri:.4f}") # 4 basamak

Kodun çıktısı:

123.46
123.4568

Sayısal veriyi yüzde olarak gösterebilirsiniz;

veri = 0.25
print(f"{veri:.0%}") # Yüzde olarak göster

Kodun çıktısı:

25%

Büyük sayıları daha okunabilir yapmak için ayırıcılar ekleyebilirsiniz.

veri = 1000000
print(f"{veri:,}")  # Virgül ile ayır
print(f"{veri:_}")  # Alt tire ile ayır

Kodun çıktısı:

1,000,000
1_000_000

Yerel ayarlara uygun olarak sayı veya para gösterim şeklini biçimlendirebilirsiniz.

import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')  # ABD yerel ayarları

fiyat = 1234
print(f"Ürün Fiyatı: {fiyat:n} $")  # Amerika yerel ayarına uygun formatlanmış çıktı

Kodun çıktısı:

Ürün Fiyatı: 1,234 $

Sayıları veya metinleri sola, sağa veya ortalı bir şekilde hizalayabilirsiniz. Aşağıdaki örnek kodda biçimlendirmeden sonra gelen rakam sütun genişliğini belirtir.

print(f"|{123:<10}|")  # Sola hizala
print(f"|{123:>10}|")  # Sağa hizala
print(f"|{123:^10}|")  # Ortala

Kodun çıktısı:

|123        |
|        123|
|    123    |

Belirli bir karakteri de boşluk yerine dolgu olarak kullanabilirsiniz.

print(f"|{123:.<10}|")  # Sola hizala
print(f"|{123:.>10}|")  # Sağa hizala
print(f"|{123:.^10}|")  # Ortala

Kodun çıktısı:

123.......
.......123
...123....

Bu biçimlendirme özeliklerini kullanarak metin dosyası içinde verileri tablo gibi yerleştirebiliriz;

sablon = '{:^13} {:<11} {:<6}\n' 

print(sablon.format('Üye No', 'Üyelik Tarihi', 'Durum')) 
print(sablon.format('123456', '22.10.2021', 'Aktif')) 
print(sablon.format('987654', '12.03.2022', 'Pasif')) 
print(sablon.format('135797', '03.09.2020', 'Pasif')) 
print(sablon.format('246806', '22.03.2019', 'Aktif'))

Kodun çıktısı:

Üye No Üyelik Tarihi Durum
123456 22.10.2021 Aktif
987654 12.03.2022 Pasif
135797 03.09.2020 Pasif
246806 22.03.2019 Aktif

Python’da metin içinde tablo kullanmanız gerektiğinde daha efektif bir yol olan tabulate kütüphanesini de kullanabilirsiniz. Tabii eğer daha önce yüklemediyseniz öncelikle terminalden vereceğiniz “pip install tabulate” komutuyla bu kütüphaneyi yüklemelisiniz.

from tabulate import tabulate

data = [
    ['Üye No', 'Üyelik Tarihi', 'Durum'],
    ['123456', '22.10.2021', 'Aktif'],
    ['987654', '12.03.2022', 'Pasif'],
    ['135797', '03.09.2020', 'Pasif'],
    ['246806', '22.03.2019', 'Aktif']
]

print(tabulate(data, headers="firstrow", tablefmt="grid"))

Kodun çıktısı:

3- Python'da Dosya Oluşturmak ve Dosyaya Veri Eklemek 1

Bu bölümde yer alan kodları şuradan görebilirsiniz;

https://repl.it/@ObenSEVEN/dosya-islemleri