From: Yuce Tekol (yucetekol@gmail.com)
Date: Tue 20 Jun 2006 - 12:11:20 GMT
Merhaba,
1) Probleminiz dosyayi "w" kipinde (mode) acmanizdan kaynaklaniyor,
eger dosyayi "a" kipinde acarsaniz, yazdiginiz seyler dosyanin sonuna
eklenir. (file() islevi ile kullanabileceginiz kiplerlin listesi:
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.12.html#fopen)
2) yazar islevi neden ozyinelemeli (recursive)? Basit bir while
dongusu ile bu isi halledebilirdiniz.
3) close() yontemini try/except icinde yazmaniza gerek yok, zaten
kapali olan bir dosyayi kapatmak istisnaya (exception) yol acmiyor.
4) Dosyayi "a" kipinde actigimiz icin os.path.exists islevine de gerek kalmiyor.
Asagida gonderdiginiz kodda yaptigim degisiklikler yer var; kolay gelsin.
Yuce Tekol
# -*- coding: utf-8 -*-
def yazar(yazici):
cd_ismi = raw_input("CD'nin ismini giriniz (Çıkmak için 'q' tuşuna basınız): ")
if cd_ismi == "q":
yazici.close()
return False
else:
print>>yazici, cd_ismi
return True
dosya = file("cdkayit.txt", "a")
while yazar(dosya):
pass
On 6/20/06, Buğrahan Korkmaz <kickboksor@gmail.com> wrote:
> Selam,
>
> Arkadaşlar biliyorum sizleri çok rahatsız ettim ama ne yapiyim elimde değil.
>
> Şimdi ben konsolda çalışan bir cd katalog programı yapıcam. Bir dosyayı open
> ile açıyorum ve yazdırıyorum. Kapatmadan bir daha yazdırıyorum ama sadece
> ilk yazdırdığım çıkıyor. İşte kod burda. Ben yazdıklarımı alt alta yazmasını
> istiyorum...
>
> #!/usr/bin/python
> # -*- coding:utf8 -*-
>
> #
> # cdkayit.py
> #
>
> import os
>
> def yazar():
> cd_ismi = raw_input("CD'nin ismini giriniz (Çıkmak için 'q' tuşuna
> basınız): ")
> if cd_ismi == "q":
> try:
> yazici.close()
> except:
> print "Zaten dosya açık değildi"
>
> sys.exit(1)
> else:
> yazici = open("cdkayit.txt","w")
> yazici.write(cd_ismi)
> return yazar()
>
> if os.path.exists("cdkayit.txt"):
> yazar()
> else:
> f = open("cdkayit.txt","w")
> f.close()
> yazar()
>
> Yardımlarınız için teşekkürler...
> --
> Buğrahan Korkmaz
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>
>
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama