10 - Dosya İşlemleri
2024
open()
fonksiyonu, bir dosyayı açar ve bir dosya nesnesi döndürür.open()
fonksiyonu modlarımod
: Dosyayı hangi modda açacağınızı belirten bir string. Yaygın olarak kullanılan modlar şunlardır:
'r'
: Okuma modu (varsayılan).'w'
: Yazma modu. Yoksa oluşturur, varsa içeriği siler.'a'
: Ekleme modu. Yoksa oluşturur, varsa sonuna ekler.'x'
: Oluşturma modu. Eğer dosya zaten varsa, FileExistsError
hatası verir.'b'
: İkili (binary) mod. Resim vb okumak için kullanılabilir.'t'
: Metin (text) modu (varsayılan). Metin dosyalarını okumak veya yazmak için kullanılır.Örnekler
open()
Fonksiyonu - Okuma ve Yazma ModlarıBazı durumlarda, bir dosyayı hem okumak hem de yazmak isteyebilirsiniz. Bu gibi durumlar için Python, hem okuma hem de yazma işlemlerine izin veren dosya modları sunar:
r+
(Okuma ve Yazma): Dosyayı hem okuma hem de yazma amaçlı açar. Dosya imleci dosyanın başına yerleştirilir. Önemli: Dosya varsa açılır, yoksa hata verir. Varolan dosyanın içeriği silinmez.
w+
(Yazma ve Okuma): Dosyayı hem yazma hem de okuma amaçlı açar. Önemli: Dosya varsa içeriği silinir, yoksa yeni bir dosya oluşturulur. Dosya imleci dosyanın başına yerleştirilir.
a+
(Ekleme ve Okuma): Dosyayı hem ekleme hem de okuma amaçlı açar. Dosya varsa, yazma işlemleri dosyanın sonuna eklenir ve dosya imleci dosyanın sonuna yerleştirilir. Dosya yoksa, yeni bir dosya oluşturulur.
Dikkat
r+
, w+
ve a+
modlarında, okuma ve yazma işlemleri arasında dosya imlecinin konumuna dikkat etmek önemlidir. seek()
metodunu kullanarak imleci istediğiniz konuma getirebilirsiniz. w+
modu, dosyanın içeriğini sildiği için dikkatli kullanılmalıdır.
Windows:
C:\Users\KullaniciAdi\Belgeler\dosya.txt
Linux/macOS:
/home/kullanici/Belgeler/dosya.txt
/Users/kullanici/Belgeler/dosya.txt
Örnek:
Geçerli çalışma dizininiz /home/kullanici/projeler/
ise:
/home/kullanici/projeler/veri.txt
veri.txt
veya ./veri.txt
os.path.join()
Fonksiyonuos.path.join()
fonksiyonunu kullanabiliriz.close()
metodunu kullanarak yapabilirsiniz.Örnek
with
ifadesi ile otomatik kapatma
with
ifadesi, bir dosyayı otomatik olarak kapatmamızı sağlar.with
bloğu sona erdiğinde, dosya otomatik olarak kapatılır.Örnek:
read()
, readline()
, readlines()
fonksiyonu dosyaları okumamızı sağlar.read()
Metoduread()
metodu, dosyanın tamamını okur ve tek bir string olarak döndürür.Örnek: dosya.txt
dosyasının içeriği:
Merhaba Dünya!
Bu bir dosya işlemleri örneğidir.
read(boyut)
: İsteğe bağlı olarak, boyut
parametresi ile okunacak maksimum karakter sayısı belirtilebilir.Merhaba Dü
readline()
Metodureadline()
metodu, dosyanın bir satırını okur ve bir string olarak döndürür.readlines()
Metodureadlines()
metodu, dosyanın tüm satırlarını okur ve her satırı bir eleman olarak içeren bir liste döndürür.for
döngüsü kullanabiliriz.write()
, writelines()
fonksiyonu dosyaya veri yazmanızı sağlar.write()
Metoduwrite()
metodu, dosyaya bir string yazar.writelines()
Metoduwritelines()
metodu, bir string listesi dosyaya yazar.tell()
ve seek()
)tell()
ve seek()
metotlarını kullanabilirsiniz.tell()
Metoduseek()
Metoduoffset
: Taşınacak bayt sayısı.from_what
: Konumun nereden itibaren hesaplanacağını belirtir:
0
: Dosyanın başlangıcından (varsayılan)1
: Geçerli konumdan2
: Dosyanın sonundanwith open("dosya.txt", "r") as dosya:
dosya.seek(10) # Dosya başlangıcından 10. bayta git
konum = dosya.tell()
print(konum) # Çıktı: 10
dosya.seek(5, 1) # Geçerli konumdan 5 bayt ileri git
konum = dosya.tell()
print(konum) # Çıktı: 15
dosya.seek(-10, 2) # Dosyanın sonundan 10 bayt geriye git (dosyanın sonu için 2 kullanılır)
konum = dosya.tell()
print(konum) # Dosya boyutuna göre değişir
Soru 1: Bir dosyayı okuyarak satır sayısını ekrana yazdıran kodu yazınız.
Cevap
Soru 2: Bir dosyayı okuyup satırları alfabetik sıralayan ve “ordered_lines.txt” ye geri yazan kodu yazın.
Cevap
# Open the file and read the lines
with open('okubeni.txt', 'r') as file:
lines = file.readlines()
# Sort the lines alphabetically
sorted_lines = sorted(lines)
# Write the sorted lines to a new file
with open('ordered_lines.txt', 'w') as output_file:
output_file.writelines(sorted_lines)
print("The lines have been sorted and written to 'ordered_lines.txt'.")
Soru 3: Bir dosyayı okuyup farklı bir dosyaya tersten yazdıran kodu yazın.
Cevap
Soru 4: Bir dosyayı okuyup en çok kelime barındıran satırı bulan ve bu satırı ve bu satırın kaç kelimeden oluştuğunu ekrana yazdıran kodu yazınız.
Cevap
# Open the file and read the lines
with open('../okubeni.txt', 'r') as file:
lines = file.readlines()
# Variables to track the longest line and word count
longest_line = ''
max_word_count = 0
# Check each line
for line in lines:
words = line.split() # Split the line into words
word_count = len(words) # Count the number of words
# If the current line has more words than the previous longest one
if word_count > max_word_count:
max_word_count = word_count # Update the longest word count
longest_line = line # Update the longest line
# Print the result
print(f"The longest line: {longest_line.strip()}")
print(f"This line has {max_word_count} words.")
Soru 5: Bir dizindeki txt dosyalarının adlarını bir başka dosyaya yazan kodu yazınız
Cevap
import os
# Dizin yolunu belirleyin
directory = 'path/to/your/directory' # Burada dizin yolunu güncelleyin
output_file = 'file_names.txt'
# Tüm .txt dosyalarının adlarını tutacak bir liste oluşturun
txt_files = []
# Dizin içindeki dosyaları kontrol et
for filename in os.listdir(directory):
if filename.endswith('.txt'): # Sadece .txt dosyalarını listele
txt_files.append(filename) # Dosya adını listeye ekle
# Dosya adlarını yeni bir dosyaya yaz
with open(output_file, 'w') as output:
for file_name in txt_files:
output.write(file_name + '\n') # Her dosya adını yeni bir satıra yaz
print(f"All .txt file names have been written to '{output_file}'.")