Programda ayarlar yapmak

#1

Arkadaslar benim anlamadigim birsey var ben bir programi yaziyorum onun kodlari .py dosyasi halinde calisdiriyorum ve hicbir sekilde programin kodlarini deyistirmiyorym bu sekilde program her defasinda kodlari bastan okuyacak ve ayni gorsel ayni ayardaki programi calisdiracak.Fakat bazi programlarda ayarlarda deyisiklik yapiyorsa programi kapadikdan sonra o deyisiklik orada kaliyor buradaki mantik nedir ben anlamadim kullanici programda oynamalar yaparken programin kodlarimi deyisiyor? Umarim ne demek istediyimi anlamiwsinizdir

0 Likes

#2

Bir örnek üzerinde anlatabilirmisin? :slight_smile:

1 Like

#3

Yanlış anlamadıysam oyunlardaki kalite düşme gibi ayarlardan bahsediyor.

Yada tuş değişimi gibi yani
Eskiden ‘s’ harfine basınca screenshot alıyor
diyelim sonra kullanıcı bunu ‘c’ diye değiştirince
kodlardamı değişiklik oluyor demiş.

0 Likes

#4

Doğrusu aklıma şöyle bir şey geldi ama çalışır mı bilmiyorum.
Mesela tuş ayarları yapcaz dosyaya yazarız
Mesela ilk satıra q yazarız sonra dosya okuma yöntemiyle bunu alıp kodda değiştirebilirsiniz.

Eşit: Çalışır mı bilmiyorum yanımda bilgisayar olmadığı için deneyemiyorum

0 Likes

#5

Evet çalışır. Dosyaya yazarsın yada veritabanında tutarsın.

0 Likes

#6

Merhaba @Efrahim,

Sen bunu settings.cfg dosyası oluşturarak yapabilirsin. configparser modulune bak.

Ya da settings.json dosyası kullanabilirsiniz. json modulu işinizi görecektir.

Kolay gelsin.Örnekle de açıklardım,ama uşendim,kusura bakmayın :slight_smile:

0 Likes

#7

İçimde kaldı.Json için 2 örnek atayım.
Verileri kaydetmek için:

import json

a = ["elma", "muz", "armut"]
kaydedilen = json.dumps(a)
with open("ayarlar_dosyası.txt", 'w') as f:
    f.write(kaydedilen)

Kaydolunan veriyi almak için:

import json

with open ("ayarlar_dosyası.txt") as f:
    dosyadaki_veri = f.read()
    kaydedilenler = json.loads(dosyadaki_veri)

for i in kaydedilenler:
    print(i)

Tek json ile kalmayın.Büyük projelerde etkisini yitirme olasılığı var.

Kolay gelsin :blush:

0 Likes

#8

Kodlar sıkıntısız çalışmalı ancak dosya uzantısı .txt yerine .json olsa daha iyi olur.

1 Like

#9

Ben @Efrahim anlasın diye txt formatı yaptım.Ama haklısınız

1 Like

#10

Benimki şu dedikleri “konu hortlatma” olayı oldu, ama böyle basit şeyleri veritabanında tutmak pek performanslı değil.

Bir yazılımcının en önemli görevlerinden biri, programı olabilecek en yüksek performansta yazabilmektir. Bu kullanıcılar üzerinde bir sorumluluğumuz. Örnek de olsa, bu kurallara uymak lazım. :grinning:

0 Likes

#11

Bilemedim:

$ rm -f test.db && sqlite3 test.db ‘CREATE TABLE ayarlar(isim TEXT NOT NULL, deger TEXT); INSERT INTO ayarlar (isim, deger) VALUES (“renk1”, “#000000”); INSERT INTO ayarlar (isim, deger) VALUES (“renk2”, “#808080”); INSERT INTO ayarlar (isim, deger) VALUES (“renk3”, “#ffffff”);’

$ /usr/bin/time python3 -c ‘import sqlite3; c = sqlite3.connect(“test.db”); print(c.execute(“SELECT deger FROM ayarlar WHERE isim=?”, [“renk2”]).fetchone()[0]);’

#808080
0.03user 0.01system 0:00.05elapsed 98%CPU (0avgtext+0avgdata 10872maxresident)k
0inputs+0outputs (0major+1233minor)pagefaults 0swaps

$ echo ‘{ “ayarlar”: { “renk1”: “#000000”, “renk2”: “#808080”, “renk3”: “#ffffff” } }’ > test.json

$ /usr/bin/time python3 -c ‘import json; f = open(“test.json”, “r”); d = json.load(f)[“ayarlar”]; print(d[“renk2”]);’

#808080
0.03user 0.02system 0:00.05elapsed 100%CPU (0avgtext+0avgdata 10088maxresident)k
0inputs+0outputs (0major+1224minor)pagefaults 0swaps
0 Likes

#12

Performanslı olsa birden fazla kolon ve fazla veri içermeyen verileri veritabanında tutmak etik olmayabilir.

0 Likes

#13

Valla bilemedim, SQLite bu is icin gelistirilmis, ve hatta boyle kullanildigi icin de dunya uzerindeki olasi en yaygin database.

Etiklik degil de, kullanicinin erisiminin zorlugu acisindan karsi cikabilirim. (Text/ini/JSON dosyasi editlemek cok daha kolay ve erisilebilir.)

0 Likes