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.
Mod | Kullanı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. |
| Sayıyı sekizli (octal) sistemde gösterir. |
| 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ı:
Bu bölümde yer alan kodları şuradan görebilirsiniz;
Bağlantıda Kalalım