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
- 188 okunma




tatterdemalion
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
baDibere
Re: Değişiklik kaydetme
Listede yaptığınız değişiklikleri nereye kaydetmek istiyorsunuz?
Bir metin dosyası mı bir veritabanına mı?
tatterdemalion
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.
sedataym
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.
berquer
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.