Çıktısı alınan veriyi kaydetmek

Merhabalar , öncelikle beginner seviyede belirteyim konuya gelirsek

örneğin

değişken = 0
def artır():
___ global değişken
___ değişken += 1
___ return değişken

dedik ve değişkenimiz 1 oldu logging gibi bir işlemle bunu programa bir yere kaydettirip
programı yeniden başlattığımda değişken = 1 olarak başlamasını nasıl yapabilirim ?

Isin ehli pickle modulu. SQLite veya PostgreSQL gibi database islerine girmeden basitce halledilebilir.

Fakat pickle'i kullanirken dosya acmak gerekecek. Hazir acmisken tek degisken icin read/write da kullanabilirsin. (Linkledigim sayfa karisik ve ornek yok, haklisin; “Python file I/O” diye aratabilirsin ama.)

Pickle’in da basit ornegi en asagidaymis.

@aib Teşekkür Ederim Hocam pickle işimi halleder , ama insan merak ediyor böyle problemleri örneğin 90’larda programlama yapan insanlar modüller olmadan nasıl çözmüşler diye :slight_smile:

90’larda (hatta 80’lerde, 70’lerde ve 60’larda) da moduller vardi ama onlara library diyorduk :slight_smile:

Python modulleri gibi gerektiginde dinamik olarak yuklenmenin yani sira, isleri bittiginde de hafizadan atilabiliyorlar. (Dynamic-link library, dynamic shared object)

bildiğimiz dll dosyalarından bahsediyorsunuz sanırım, programlamaya başlayalı 1 sene oldu en basit problemler için bile modül veya libary kullanmak biraz can sıkmaya başladı benim için sanki modüller olmadan elim kolum bağlı gibi hissediyorum da o yüzden biraz yakındım :slight_smile:

Bahsettiğiniz örnekteki değişken'in değerini şöyle de arttırabilirsiniz:

Diyelim bu kodlariniz script.py isimli bir dosyanın içinde. Bu dosyanın içeriği update.py isimli başka bir python dosyası ile değiştirebilir.

import update

değişken = 1

def artir():
    global değişken
    değişken += 1
    return değişken
    
artir()

update.py dosyamızın içinde de şu kodlar yer alıyor olsun:

from script import değişken

def main():
    with open(file="script.py", mode="r+", encoding="utf-8") as f:
        lines = file.readlines()
        for i in range(len(lines)):
            if lines[i].startswith("değişken"):
                lines[i] = f"değişken = {değişken}\n"
        f.seek(0)   
        for i in lines:
            f.write(i)

main()

script.py dosyasını çalıştırdığımız zaman içeriği şu şekilde değişecektir:

import update

değişken = 2

def artir():
    global değişken
    değişken += 1
    return değişken
    
artir()

aslında istediğim çözüm’de tam da buydu , örneğin random modülünün olmadığı bir durumda sistem zamanının 1.basamağındaki saniyeyi matematiksel işlemle rastgeleleştirmek gibi modülsüz bir şey istiyordum verdiğiniz örnek için teşekkürler hocam @dildeolupbiten

1 Beğeni