Herkese merhaba,
Bu makalede Python'da dosya işlemlerini ve 'os' sınıfını anlattım.
Python:
Python:
Yukarıdaki komutları çalıştırdığımda ise şu şekilde:
Python:
Sonuç olarak dosyanın içinde 'Rent: 2000₺' yazdığını görebilirsiniz:
Bu şekilde bir dosyamız olsun:
Eğer bunu
Python:
Şu çıktıyı alırız:
Eğer readline() kullanırsak satır satır olarak okur. Şu komutlar ile:
Python:
Şu çıktıyı alırız:
Eğer
'w+' ise dosyayı hem okuma hem yazma kipinde açar ve dosyanın içindekileri siler. Dosya yoksa yenisini oluşturur.
'r+' ise 'w+' ile aynı özelliklerde açar ancak dosyanın diskte bulunması gerekir.
Daha pek çok kip var ancak en çok kullanılan kipler bunlar.
Çıktı dosyanın türüne göre değişir.
Kullanacağımız sınıfları ve fonksiyonları tutacak bir kaynak dosyası oluşturalım. Bunun adı
'os' kütüphanesini ekleyelim.
Bu kaynak dosyaya account adında bir sınıf ekleyelim. Bu ad ve şifre içerecek. Ayrıca istediğimizde account bilgilerini yazdıracak:
Accountların her birini ayrı dosyalarda
Gerekli işlemleri fonksiyonlara atayalım:
Konsola komut yazıp çalıştırmamız lazım. Acc ekleyebilir, silebilir veya bilgileri listeleyebiliriz. Bunun için başka bir sınıf oluşturuyoruz:
Projeye buradan ulaşabilirsiniz. Daha geliştirilmesi lazım elbette.
Umarım makalem yardımcı olmuştur. Okuduğunuz için teşekkür ederim.
Bu makalede Python'da dosya işlemlerini ve 'os' sınıfını anlattım.
Bir dosyayı açmak içinopen() kullanımı:
open()
fonksiyonunu kullanılır. Temel parametre olarak dosya yolu(Default olarak projenin çalıştığı yer dizindir.) ve open-mode alır. Alabileceği başka parametreler de var.close()
ile dosyayı kapatmayı unutmayın.Python:
Python:
billing_information = open(file_path, open_mode)
- 'w' kipi:
Kod:
- main.py
Python:
Python:
billing_information = open('bill_info.txt', 'w')
billing_information.close()
Kod:
- billing_information.txt
- main.py
write()
ile yazma işlemi yapabiliriz:Python:
Python:
billing_information = open('bill_info.txt', 'w')
billing_information.write('Rent: 2000₺')
billing_information.close()
Kod:
--------------------billing_information--------------------
Rent: 2000₺
- 'r' kipi:
read()
, readline()
ve readlines()
ile dosyayı okuyabilirsiniz.Bu şekilde bir dosyamız olsun:
Eğer bunu
read()
ile okursanız çok satırlı string olarak değer döndürür. Şu komutlar ile:Python:
Python:
f = open('bill_info.txt', 'r')
print(f.read())
f.close()
Kod:
Water: 120TL
Electric: 780TL
Rent: 2000TL
Eğer readline() kullanırsak satır satır olarak okur. Şu komutlar ile:
Python:
Python:
f = open('bill_info.txt', 'r')
print(f.readline())
f.close()
Kod:
Water: 120TL
Eğer
readlines()
kullanırsak list değer return eder:
Kod:
'Water: 120TL', 'Electric: 780TL', 'Rent: 2000TL'
- Diğer kipler:
'w+' ise dosyayı hem okuma hem yazma kipinde açar ve dosyanın içindekileri siler. Dosya yoksa yenisini oluşturur.
'r+' ise 'w+' ile aynı özelliklerde açar ancak dosyanın diskte bulunması gerekir.
Daha pek çok kip var ancak en çok kullanılan kipler bunlar.
'os' kütüphanesiyle OS özelliklerini ve disk içeriği gibi şeyleri öğrenebiliriz. Şimdilik dosyalarla alakalı olanları anlatacağım. Kütüphaneyi projeye import etmeyi unutmayın.'os' kütüphanesi:
os.listdir()
kullanımı:
os.path.isdir()
kullanımı:
os.listdir()
'i birlikte kullanırsak:
Python:
import os
while True:
path = input('>> ')
if os.path.isdir(path):
for file_name in os.listdir(path):
print(file_name)
else:
print('The path is not a directory..')
os.path.isfile()
kullanımı:
os.path.isdir()
'in tam tersi olarak pathin dosya olup olmadığını kontrol eder.os.path.exists
kullanımı:
O halde makaleyi örnek bir çalışmayla bitirelim: Hesap yöneticisi.Örnek program:
Kullanacağımız sınıfları ve fonksiyonları tutacak bir kaynak dosyası oluşturalım. Bunun adı
acc_manager_sys.py
olsun.'os' kütüphanesini ekleyelim.
Bu kaynak dosyaya account adında bir sınıf ekleyelim. Bu ad ve şifre içerecek. Ayrıca istediğimizde account bilgilerini yazdıracak:
Python:
class account:
def __init__(self, nick, password):
self.nick = nick
self.password = password
def printaccinfos(self):
print('Nick:', self.nick)
print('Password:', self.password)
accs
isimli bir klasörde tutacağız.Gerekli işlemleri fonksiyonlara atayalım:
Python:
def get_infos_in_acc_file(accnick):
accs = os.listdir('accs')
for acc in accs:
if acc == accnick:
accfile = open('accs/' + acc)
nick = accfile.readline().strip()
password = accfile.readline().strip()
accfile.close()
return account(nick, password)
return None
def delete_acc(accnick):
if os.path.exists('accs/' + accnick):
os.remove('accs/' + accnick)
else:
print('This account is not defined.')
def new_acc(accnick, nick, password):
if os.path.exists('accs/' + accnick):
print('This account already exists.')
else:
new_acc_file = open('accs/' + accnick, 'w')
new_acc_file.write(nick + '\n' + password)
new_acc_file.close()
Python:
class command:
def __init__(self, command):
self.command = command
def run_command(self):
if self.command == 'append':
acc_name = input('Acc Name>> ').strip()
nick = input('Nick>> ').strip()
password = input('Password>> ').strip()
new_acc(acc_name, nick, password)
elif self.command == 'get':
acc_name = input('Acc Name>> ').strip()
print(get_infos_in_acc_file(acc_name).printaccinfos())
elif self.command == 'delete':
acc_name = input('Acc Name>> ').strip()
delete_acc(acc_name)
else:
print('Command not found.')
main.py
kaynak doyasına ise bunları çalıştıracak ve döngüye alacak kodu yazalım:
Python:
import acc_manager_sys
while True:
comtext = input('>> ').strip()
com = acc_manager_sys.command(comtext)
com.run_command()
Umarım makalem yardımcı olmuştur. Okuduğunuz için teşekkür ederim.
Dosya Ekleri
Son düzenleyen: Moderatör: