Forumlar > Atölye > Yazılım Geliştirme (Değişiklik kaydetme)
berquer kullanıcısının resmi

berquer

Kayıt: 04/11/2007

Değişiklik kaydetme

İhtiyacımdan dolayı bir arşiv programı yazdım konsoldan çalışan. ancak listede yaptığım değişiklikleri kaydedemiyorum. Pythonda çok çok yeniyim. Yardımlarınızı bekliyorum.

#!/usr/bin/env python
#-*- coding:latin-1 -*-

from __future__ import division

	
liste = [""]	

while True:

	
	secenek1="1 - ARŞİVİ GÖR"
	secenek2="2 - ARŞİV'DE ARA"
	secenek3="3 - ARŞİV'E EKLE"
	secenek4="4 - ARŞİV'DEN ÇIKAR"
	secenek5="5 - ÇIKIŞ"
	
	print
	print
	print secenek1
	print secenek2
	print secenek3
	print secenek4
	print secenek5
	print
	
	soru = raw_input("Lütden uygulamak istediğiniz adım numarasını seçin :")
	
	print
	
	
	
			
	
	if soru =="1":
		print liste
	
	
	if soru =="2":
	
		bul = raw_input("Lütfen aradığınız öğenin ismini girin :")
		print liste.index(bul)
	
	if soru =="3":
		ekle = raw_input("Lütfen ekliyeceğiniz öğeyi yazın :")
		liste = liste + [ekle]
		print
		print "Öğe başarıyla arşive eklendi."
		print
	if soru =="4":
		cikar = raw_input("Lütfen sileceğiniz öğeyi yazın :")
		liste.remove(cikar)
		print
		print "öğe başarıyla arşivden çıkarıldı."
		
	if soru =="5":
			break
	
Top
tatterdemalion kullanıcısının resmi

tatterdemalion

Kayıt: 26/03/2007

Re: Değişiklik kaydetme

Değişiklikleri kaydetmekten kasıt, listeyi diske kaydetmekse, bildiğim kadarıyla bu mümkün değil.
Ancak liste yerine sözlük kullanırsanız shelve modülü ile bir veritabanı gibi kayıt girebilirsiniz.
http://www.wiki.pardus-linux.org/index.php?title=Shelve

Top
baDibere kullanıcısının resmi

baDibere

Kayıt: 14/10/2007

Re: Değişiklik kaydetme

Listede yaptığınız değişiklikleri nereye kaydetmek istiyorsunuz?
Bir metin dosyası mı bir veritabanına mı?

Top
tatterdemalion kullanıcısının resmi

tatterdemalion

Kayıt: 26/03/2007

Re: Değişiklik kaydetme

Ben de tam anlayamadım ama listedeki ögeleri bir metin dosyasına satır satır kaydedip, sonra oradan tekrar okumak ve listeye eklemek mümkün...
Sanırım biraz daha açıklayıcı olmalısınız.

Top
sedataym kullanıcısının resmi

sedataym

Kayıt: 27/07/2007

Re: Değişiklik kaydetme

Kalıcı bir arşiv olmasını istersen bilgileri bir txt dosyasına veya bir veri tabanına yazdırmalısın. Yoksa programı kapattığın anda liste boşalır. Bu doğrultuda yazdığınız kodlarda biraz değişiklikler ve eklemeler yaptım.

#!/usr/bin/env python
#-*- coding:latin-1 -*-

from __future__ import division
import os
   


while True:
   liste = []
   dizin = os.listdir(os.getcwd())
   
   if "/forum/deC49FiC59Fiklik_kaydetme/arsiv.txt" in dizin:
	   oku=open("/forum/deC49FiC59Fiklik_kaydetme/arsiv.txt", "r").read() #eğer dosya varsa okuma kipinde açıyoruz
   else:
	   try:
	   	oku=open("/forum/deC49FiC59Fiklik_kaydetme/arsiv.txt", "w").read() #eğer dosya yoksa yeni bir dosya oluşturuyoruz
	   except IOError:
		oku=open("/forum/deC49FiC59Fiklik_kaydetme/arsiv.txt", "r").read()
   
   secenek1="1 - ARŞİVİ GÖR"
   secenek2="2 - ARŞİV'DE ARA"
   secenek3="3 - ARŞİV'E EKLE"
   secenek4="4 - ARŞİV'DEN ÇIKAR"
   secenek5="5 - ÇIKIŞ"
   
   print
   print
   print secenek1
   print secenek2
   print secenek3
   print secenek4
   print secenek5
   print
   
   soru = raw_input("Lütfen uygulamak istediğiniz adım numarasını seçin :")
   
   print
   
   liste1=oku.split() #arsiv.txt dosyamızın içeriğini listeye çeviriyoruz
   for i in liste1:
	   liste.append(i)
   
         
   
   if soru =="1":
      for i in liste:
	      i=i.replace("~~"," ") #liste öğelerimizi alt alta yazdırıyoruz
	      print "\n%s" %(i)
   
   
   if soru =="2":
      bul = raw_input("Lütfen aradığınız öğenin ismini girin :")
      for i in liste:
	      if bul in i:
		      i=i.replace("~~"," ")  #listede arama yapıyoruz 
		      print
		      print i
      
	      
	      
   
   def veri_gir(veri):
	   veri=veri.replace(" ", "~~") #eklemek istediğimiz öğeyi arsiv.txt dosyasına yazdırıyoruz.
	   yaz=open("/forum/deC49FiC59Fiklik_kaydetme/arsiv.txt", "a")
	   yaz.write(" %s" %(veri))
   
   def veri_cikar(veri):
	   liste.remove(veri)
	   liste1=" ".join(liste)
	   yaz=open("/forum/deC49FiC59Fiklik_kaydetme/arsiv.txt", "w")
	   yaz.write(liste1)
   
   if soru =="3":
      ekle = raw_input("Lütfen ekliyeceğiniz öğeyi yazın :")
      veri_gir(ekle)
      print
      print "Öğe başarıyla arşive eklendi."
      print
   if soru =="4":
      cikar = raw_input("Lütfen sileceğiniz öğeyi yazın :")
      cikar=cikar.replace(" ","~~")
      veri_cikar(cikar)
      print
      print "öğe başarıyla arşivden çıkarıldı."
      
   if soru =="5":
         break 

Üstteki kodları incelerseniz listeye eklenen öğeler bir text dosyasına yazdırılıyor ve programı kapatıp tekrar açtığınızda bile daha önce girmiş olduğunuz bilgilere ulaşabiliyorsunuz.
ayrıca arama özelliğini daha fonksiyoner hale getirdim.

yabancı olduğunuz kodları http://www.istihza.com adresinden okuyarak anlayabilirsiniz.
orjinal dosya ektedir.

Top
berquer kullanıcısının resmi

berquer

Kayıt: 04/11/2007

Re: Değişiklik kaydetme

Çok açıklayıcı olamadığım için kusura bakmayın yardımlarınız için teşekkürler. Sorunumu tam açıklayamamış olsamda sedataym arkadasım çözmüş sorunu. Üstünde birkaç düzenleme yapıp istediğim hale getirdim.

Top