Python'da bir dosyada güncelleme yapmak, yani dosya içindeki belirli bir veriyi değiştirmek için birkaç adım izlemek gerekir. Doğrudan dosya üzerinde belirli bir satırı değiştirmek mümkün değildir. Bunun yerine, genellikle şu adımlar izlenir:
- Dosyayı okuma modunda açarak içeriği belleğe almak.
- İçerik üzerinde gerekli değişiklikleri yapmak.
- Dosyayı yazma modunda açarak güncellenmiş içeriği yeniden dosyaya yazmak.
1. Adım: Dosyayı Okuma
İlk olarak dosyayı okuma modunda açarak dosyanın tüm içeriğini okuruz. Bu işlem genellikle readlines()
veya read()
ile yapılır.
2. Adım: Güncelleme
Daha sonra, bu içerik üzerinde istediğimiz değişiklikleri yaparız.
3. Adım: Dosyaya Güncellenmiş İçeriği Yazma
Son olarak dosyayı yazma modunda açıp güncellenmiş içeriği dosyaya geri yazarız. Yazma işlemi, dosyanın eski içeriğini tamamen siler ve yeni içerik yazar.
Örnek: Belirli Bir Satırı Güncelleme
Aşağıda bir dosyada belirli bir satırı güncellemek için örnek bir kod bulunuyor:
# Dosyanın içeriğini oku
with open("dosya.txt", "r") as dosya:
satirlar = dosya.readlines() # Dosyanın tüm satırlarını liste olarak oku
# Satırlarda değişiklik yap
for i in range(len(satirlar)):
if "eski_veri" in satirlar[i]:
satirlar[i] = satirlar[i].replace("eski_veri", "yeni_veri")
# Güncellenmiş içeriği dosyaya geri yaz
with open("dosya.txt", "w") as dosya:
dosya.writelines(satirlar) # Güncellenen satırları dosyaya yeniden yaz
Bu örnekte:
- Dosya okuma modunda açılarak
readlines()
ile satır satır okunur. - Döngü içinde, her satırda belirli bir veriyi arayıp,
replace()
ile o veriyi güncelleriz. - Son olarak dosya yazma modunda açılarak güncellenmiş satırlar dosyaya yazılır.
4. Örnek: Kullanıcıdan Veri Alarak Dosyada Güncelleme
Kullanıcının verdiği bir veriyle dosyadaki belirli satırı güncelleme:
arama = input("Değiştirilecek veriyi girin: ")
degisim = input("Yeni veriyi girin: ")
# Dosyanın içeriğini oku
with open("dosya.txt", "r") as dosya:
satirlar = dosya.readlines()
# Değişiklikleri yap
for i in range(len(satirlar)):
if arama in satirlar[i]:
satirlar[i] = satirlar[i].replace(arama, degisim)
# Güncellenmiş içeriği dosyaya geri yaz
with open("dosya.txt", "w") as dosya:
dosya.writelines(satirlar)
Dosyayı Güncelleme Modları
-
Yazma Modu (
'w'
): Dosyayı tamamen yeniden yazar, içeriği silip baştan yazar. -
Ekleme Modu (
'a'
): Sadece dosyanın sonuna veri ekler, var olan içeriği güncellemek için kullanışlı değildir. -
Okuma ve Yazma Modları (
'r+'
): Dosyayı hem okuma hem yazma modunda açar, ancak dikkatli kullanılmalıdır. Çünkü dosyanın belirli bir yerinde yazma işlemi yapmak var olan içeriği bozulabilir.
Özet
- Dosya güncelleme işlemi, içeriği okuma, güncelleme ve yeniden yazma adımlarını içerir.
-
readlines()
veyaread()
ile dosya içeriğini okur, gerekli değişiklikleri yaptıktan sonrawritelines()
ile yeni içerik dosyaya yazılır. - Güncellemeleri yaparken dikkatli olunmalıdır çünkü yazma işlemi dosyanın eski içeriğini tamamen siler.