Python’da listeyi kaydetme

Question

Python’da liste üzerinde işlem yaptıktan sonra listeyi nasıl kaydedebilirim?

Örneğin:

liste = [1,2,3,4,5]

Bu listeye append ile  6 7 8 9 elemanlarını ekledik listenin yeni hali:

liste = [1,2,3,4,5,6,7,8,9]

oldu fakat programı kapatınca liste eski haline geri dönüyor bunu nasıl önleyebilirim?

solved 0
Bilişim semih gök 2 weeks 7 Answers 128 views Çırak 0

About semih gökÇırak

Answers ( 7 )

  1. Json dosyasında güncel bilgileri saklayabilirsin. Program kapandığında ilk yazıldığı hali alır, dolasıyla veritabanı,json vb. yöntemler kullanmalısınız.

     

  2. Python’un standart modüllerinden “shelve” modülünü kullanarak yapabilirsin. “shelve” modülünün liste saklanması için örnek kullanımı aşağıda. Bu işi başka yollarla da yapmak mümkün ama “shelve” bildiğim kadarıyla en basiti

    Not: Aşağıdaki kodu Windows altında çalışan bir Python yorumlayıcısında çalıştıracaksan  en baştaki “#!” ile başlayan satırı silmeyi unutma.

    Eğer düzgün okunamıyorsa kodu aşağıdaki bağlantıdan da görüntüleyebilirsin.

    Shelve modülüyle liste saklanması

    Aşağıdaki bağlantıda shelve modülü biraz daha detaylı olarak Türkçe anlatılmış.

    “Shelve” modülünün kullanımı

    Best answer
  3. Teşekkür ederim ama bu modül kendine ait uzantısı olan bir dosya türünde verileri tutuyor sanırım yani veriler sadece shellden okunabiliyor.Bunu txt dosyasına yazmak için kullanabilir miyim veya py’de olabilir.Mesela veri.py isimli dosyamız var bunun içine liste = [1,2,3,4,5,6] kodunu yazdık başka bir dosyada bunu import etttik ve liste içine yeni veriler ekledik ve programı kapattık.Bu işlem sonunda listeyi yeni haliyle kaydeden bir şey arıyorum. Shelve farklı dosya türlerini kabul etmiyor.Cevapladığınız için tekrar teşekkür ederim.

  4. Merhaba,

    Aşağıda kurduğum yapı ile kullanabilirsiniz.

    Okunacak dosyanın lokasyonunu ya da uzantısını değiştirerek istediğiniz şekilde kodu evirebilirsiniz.

  5. Bildiğim kadarıyla sadece etkileşimli kabuktan (”shell”den) okunabilen bir dosya tipi yok. “Shelf” tipi dosyalar açıldığı program dışındaki Python programları tarafından da okunup yazılabilir.

    Eğer bu listeye program içerisinde her seferinde “shelf” nesnesinin parçası olarak ulaşmak zor geliyorsa bu listeyi geçici olarak normal bir listeye atayabilirsiniz. Programı kapatmadan önce listenin son halini tekrar asıl “shelf” listesine atayıp normal bir şekilde “shelf” dosyasını kaparsanız listenin son hali de kaydedilmiş olur.

    Örneğin, daha önceki örnekteki dosyayı çalıştırdıktan sonra hem varsa IDLE gibi kullandığınız düzenleyiciyi (“editor”) hem de kabuğu kapatıp çıkın. Sonra yeniden açıp aşağıdaki gibi bir program yazın. Daha önce kaydedilen listeyi bu yeni programdan da çağırdıktan sonra aşağıdaki  gibi değişiklik yapıp, sonra da yeniden kaydedebilirsiniz.

    Bildiğim kadarıyla listeleri ve diğer Python değişkenlerini standart kütüphanedeki “pprint” modülündeki “pformat()” metodunu kullanarak kolay ve uygun bir şekilde karakter dizisine (“string”) döndürerek metin dosyası formatında kaydetmek mümkün. Daha sonra da aynı program ya da başka Python programları çalıştırıldığında bu metin formatındaki dosyayı programların içine çekerek değişkenlere son halleriyle tekrar ulaşmak mümkün.

    pprint modülünün bahsettiğim şekilde kullanımını anlatan Türkçe bir internet sayfası aradım ancak maalesef bulamadım. Uygun olur olmaz onu da örneklerle ayrı bir mesajda anlatmaya çalışırım. Ancak bildiğim kadarıyla özel bir nedenden dolayı gerekmiyorsa veri dosyalarının ikili (“binary”) formatında saklanması öneriliyor.

  6. Daha önce belirttiğim gibi Python’da listelerin gerektiğinde metin dosyası olarak kaydedilmesi için standart (ya da gömülü) “pprint” modülündeki pformat() metodundan da yararlanılabiliniyor. Aşağıda bunun nasıl yapılabileceğini örnekleriyle beraber anlatmaya çalıştım.

    Aşağıdaki iki ayrı programdan birincisinde bir liste değişkeni pformat() kullanılarak düzgün bir biçimde karakter dizisine (“string”) dönüştürülüyor. Daha sonra bu karakter dizisi pformat() metoduyla bir metin dosyasına yazılıyor. pformat() metodu karakter dizisinin Python bu karakter dizisini tekrar gördüğünde doğru olarak anlayacağı şekilde oluşmasını sağlıyor. En sonunda da karakter dizisi belirtilmiş olan dosyaya yazılıyor.
    Birinci program

    İkincisindeyse kaydedilmiş olan liste metin dosyası bir programın içine çekilerek okunmuş oluyor ve gelen liste üzerinde değişiklik yapılıyor. Daha sonra da listenin son hali yine karakter dizisine dönüştürülerek tekrar metin dosyasına yazdırılıyor.
    İkinci program

    Burada önemli olan noktalardan biri listenin içinde olduğu metin dosyasının programa “import” deyimiyle çekilmesinin sadece bir okuma işlemi olması. Liste bu şekilde programa alındıktan sonra üzerinde değişiklikler yapılırsa program bitmeden önce sanki metin dosyası yeniden yaratılıyormuş gibi metin dosyasına tekrar yazdırılmalı. Bu yapılmazsa listede yapılan değişiklikler metin dosyasına yansımamış olur ve metin dosyası başka bir programa çekildiğinde listenin eski hali gelir.

  7. Teşekkürler pprint çok daha kullanışlı aslında aklımdan böyle bişey geçmişti fakat modülü bilmiyordum yardımınız için tekrar teşekkürler

Leave an answer

Captcha Click on image to update the captcha .